第十三週閱讀項目(2):虛析構函數

代碼:

#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;
}


運行結果:

 

學習心得:

如果將基類的析構函數聲明爲虛函數時,由該基類所派生的所有派生類的析構函數也都自動成爲虛函數,即使基類和派生類析構函數的名字不同。當基類的析構函數爲虛函數時,無論指針指的是同一類組中的哪一個類對象,系統都會採用動態關聯,調用相關類的析構函數,對該對象進行清理工作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章