下面调用了两次a->~A(),
为什么第一次成功调用了子类的析构函数,
而第二次却没有调用子类的析构函数?
class A
{
public:
A(){}
virtual ~A()
{
cout<<"~A() "<<this<<endl;
}
int iAA;
};
class B: public A
{
public:
B(){}
virtual ~B()
{
cout<<"~B() "<<this<<endl;
}
};
B* b = new B();
A* a = b;
cout<<"*******************************"<<endl;
a->~A();
cout<<"*******************************"<<endl;
a->~A();
cout<<"*******************************"<<endl;
------解决方案--------------------------------------------------------
这就不好说了,什么结果都有可能。
只是用户自己的数据没变,虚基表是系统管理的,变没变可没准。