#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;
}
繼承關係,運用基類指針指向子類對象,可以用在觀察者模式,將基類指針保存的子類對象的容器便利,發送給所有的子類對象。
運用很廣,有待發現運用,重點!!!!!