C++中子类析构函数不执行问题
1、C++中有时遇到子类析构函数不执行的情况
#include<iostream> using namespace std; class A{ public: A(){} ~A(){cout << "A xigou \n";} }; class B:public A{ public: B(){} ~B(){cout << "B xigou \n";} }; int main(){ A *a=new A; delete a; a=new B; delete a; }
运行结果是:
A xigou
A xigou
修改一下使A析构函数定义为虚函数
#include<iostream> using namespace std; class A{ public: A(){} virtual ~A(){cout << "A xigou \n";} }; class B:public A{ public: B(){} ~B(){cout << "B xigou \n";} }; int main(){ A *a=new A; delete a; a=new B; delete a; }
运行结果是:
A xigou
B xigou
A 析构
可以看到析构函数也可以看成是普通的成员方法,也会被父类析构函数覆盖
浙公网安备 33010602011771号