#include<iostream>
using namespace std;
class Mahesh
{
public:
Mahesh(){
cout<<"Base Constructor is called at here"<<endl<<endl;
}
virtual ~ Mahesh()
{
cout<<"Base Destructor is called"<<endl<<endl;
}
};
class Purnima:public Mahesh
{
public:
Purnima()
{
cout<<"Derived class constructor"<<endl<<endl;
}
~Purnima(){
cout<<"Derived class Destructor"<<endl<<endl;
}
};
int main()
{
Mahesh *m1;
Purnima p1;
m1=&p1;
return 0;
}
我的問題是,如果我不析構函數的前面,然後上面的代碼寫關鍵字virtual
工作正常,那麼爲什麼虛析構函數?省略關鍵字析構函數之前虛擬仍然工作幾乎
更好的重複:https://stackoverflow.com/q/461203/501250 – cdhowie
重複都不合適。答案是'virtual'是繼承的,無論你是否在派生析構函數中重新指定它。 – EJP
你甚至從不會以多態的方式調用析構函數。你基本上正在測試銷燬派生類調用父類和派生類的析構函數。 – chris