using namespace std;
class A
{
public:
A(){cout<<"A constructor"<<endl;}
~A(){cout<<"A desstructor"<<endl;}
};
class B : public A
{
public:
B(){cout<<"B constructor"<<endl;}
~B(){cout<<"B desstructor"<<endl;}
};
int main(){
A *pa = new B;
delete pa;
return 0;
}
//輸出
//A constructor
//B constructor
//A desstructor
父類的析構函數沒有聲明爲virtual,故子類的析構函數不會被調用到
若~A爲virtual的,則~B自動爲virtual