MyException - 我的异常网
当前位置:我的异常网» C++ » 虚析构函数,为什么,哪位高手能解释?懵了

虚析构函数,为什么,哪位高手能解释?懵了

www.MyException.Cn  网友分享于:2013-02-16  浏览:2次
虚析构函数,为什么,谁能解释?懵了。
下面调用了两次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;










------解决方案--------------------
引用:
为什么a不存在了?
A()里面什么都没有做吧?数据应该是保持不变的啊?
引用:第一次调用a->A()后,a就不存在了,任何操作都是非法的。


这就不好说了,什么结果都有可能。

只是用户自己的数据没变,虚基表是系统管理的,变没变可没准。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有