|
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,調(diào)用的是類B中的ABC()
思考結(jié)果:虛函數(shù)調(diào)用時,沿著繼承逆方向?qū)ふ艺{(diào)用函數(shù),中間有一個層次沒有定義相應函數(shù)則會繼續(xù)在其直接基類中尋找,依此類推。
|
|