C c;
virtual ~A(){
cout<<"This is A Destructor"< }
};
class B: public A,public C{
public:
B(){cout<<"This is B Constructor"< ~B(){cout<<"This is B Destructor"<};
int main()
{
C*a=new B;
delete a;
system("PAUSE");
return EXIT_SUCCESS;
}
结果同Example 2:
This is C Constructor
This is A Constructor
This is C Constructor
This is B Constructor
This is B Destructor
This is C Destructor
This is A Destructor
This is C Destructor
小结论:
一般规则 将根基类的析构函数声明为虚拟的,这样就能将所有的基类子对象释放
要不然就想第一个一样,没完全释放!