c++ 虚析构函数
测试代码:
void testViturlXiGou() {class Base1 {public:virtual ~Base1() { // 声明为虚析构函数cout << "Base1 析构" << endl;}};class Sub1 : public Base1 {public:~Sub1() override { // 派生类析构函数cout << "Sub1 析构" << endl;}};class Base2 {public:~Base2() { // 非虚析构函数cout << "Base2 析构" << endl;}};class Sub2 : public Base2 {public:~Sub2() {cout << "Sub2 析构" << endl;}};Base1* b1 = new Sub1();Base2* b2 = new Sub2();delete b1;cout << "========================================" << endl;delete b2;
}
打印:
虚析构函数用于解决基类指针指向子类对象时的资源释放问题。保证正确的析构调用顺序。防止子类析构函数不调用导致内存泄露。