繼承,基類指針指向子類對象

#include <iostream>
#include <vector>
using namespace::std;

class A
{
public:
	virtual ~A()=0;
	virtual void update() = 0;
};
A::~A()
{
}

class B :public A
{
public:
	B() {}
	~B();
	void update() { cout << "B" << endl; }
	void print() { cout << "B" << endl; }
};
B::~B()
{
}
class C :public A
{
public:
	C() {}
	~C();
	void update() { cout << "C" << endl; }
	void print() { cout << "C" << endl; }
};
C::~C()
{
}

class D :public C
{
public:
	D() {}
	~D();
	void update() { cout << "D" << endl; }
	void print() { cout << "D" << endl; }
};
D::~D()
{
}
int main()
{
	B b;
	C c;
	D d;
	vector<A*> a;
	a.push_back(&b);
	a.push_back(&c);
	a.push_back(&d);
	for (vector<A*>::iterator it =a.begin();it!=a.end();++it)
	{
		A *ma = *it;
		ma->update();
	}
	A *ba = new B;
	ba->update();
	system("pause");
	
    return 0;
}


繼承關係,運用基類指針指向子類對象,可以用在觀察者模式,將基類指針保存的子類對象的容器便利,發送給所有的子類對象。

運用很廣,有待發現運用,重點!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章