代碼:
#include <iostream>
using namespace std;
class BASE
{
private:
char c;
public:
BASE(char n):c(n) {}
virtual ~BASE()
{
cout<<c;
}
};
class DERIVED:public BASE
{
private:
char c;
public:
DERIVED(char n):BASE(n+1),c(n) {}
~DERIVED()
{
cout<<c;
}
};
int main()
{
DERIVED d('X');
return 0;
}
運行結果:
學習心得:
如果將基類的析構函數聲明爲虛函數時,由該基類所派生的所有派生類的析構函數也都自動成爲虛函數,即使基類和派生類析構函數的名字不同。當基類的析構函數爲虛函數時,無論指針指的是同一類組中的哪一個類對象,系統都會採用動態關聯,調用相關類的析構函數,對該對象進行清理工作。