#include <iostream>
using namespace std;
class A{
public: int a;
virtual void print(){
cout << "A print" << endl;
}
virtual ~A(){
cout << "~A print" << endl;
}
};
class B : public A{
public: int b;
virtual void print(){
cout << "B print" << endl;
}
virtual ~B(){
cout << "~B print" << endl;
}
};
int main()
{
B* b = new B();
delete b;
cout << "Hello World";
return 0;
}
输出
~B print
~A print
Hello World
我怀疑是代码编译的时候,向子虚析构函数中,自动加了一行父析构函数的调用
比如,
this.A.~A();