#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;
}
继承关系,运用基类指针指向子类对象,可以用在观察者模式,将基类指针保存的子类对象的容器便利,发送给所有的子类对象。
运用很广,有待发现运用,重点!!!!!