class CA
{
public:
CA(){cout<<"CA constructor"<<endl;}
~CA(){cout<<"CA desstructor"<<endl;}
};
class CB:public CA
{
public:
CB(){cout<<"CB constructor"<<endl;}
~CB(){cout<<"CB desstructor"<<endl;}
};
class CC:public CB
{
public:
CC(){cout<<"CC constructor"<<endl;}
~CC(){cout<<"CC desstructor"<<endl;}
};
CA是爷爷,CB是爸爸,CC是儿子。
那么任何一本C++的书都会讲,构造函数的调用顺序是CA CB CC,析构函数的调用顺序是CC,CB,CA,什么???你的书没讲,靠,扔了吧
于是
(1) int main()
{
CC p ;
}
这个程序运行结果是
CA constructor
CB constructor
CC constructor
CC desstructor
CB desstructor
CA desstructor
靠,太简单了,一个鸡蛋飞过来了,:(
继续……………………
(2) 再做第二个试验之前,先做一点小小修改
~CA(){cout<<"CA desstructor"<<endl;} ----->>>
virtual ~CA(){cout<<"CA desstructor"<<endl;}
修改main 代码如下
int main()
{