|
class A
{
public:
int aa;
A() : aa( 1 ){}
~A(){}
virtual void ABC(){ aa = 2; }
};
class B : public A
{
public:
B(){}
~B(){}
virtual void ABC(){ aa = 3; }
};
class C : public B
{
public:
C(){}
~C(){}
};
class D : public C
{
public:
D(){}
~D(){}
};
a = new D;//这时候aa的值为1,这是初始化的效果
a->ABC();//这时候aa的值为3,调用的是类B中的ABC()
思考结果:虚函数调用时,沿着继承逆方向寻找调用函数,中间有一个层次没有定义相应函数则会继续在其直接基类中寻找,依此类推。
|
|