我們直接上案例:
// 虛析構函式.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#includeusing namespace std;
#pragma warning(disable:4996)
class a
~a()
private:
char *p;
};class b:public a
~b()
private:
char *p;
};class c :public b
~c()
private:
char *p;
};void howtodelete(a *base)
int _tmain(int argc, _tchar* argv)
這個時候執行的結果是:
我們看到並沒有執行b和a的析構函式。僅僅執行了父類的析構函式。因為這個時候沒有虛函式,是靜態聯編,因此是什麼型別就呼叫什麼方法,不會根據型別相容性原則來
當我們想通過父類指標 把所有的子類物件的 析構函式 都執行一遍
意思就是想通過父類指標 釋放所有的子類資源
這種情況 只能使用虛析構函式。
// 虛析構函式.cpp : 定義控制台應用程式的入口點。
C 學習筆記 虛析構函式與純虛析構函式
開始學c 了,所以又重拾以前學習過的相關概念 析構函式是當乙個物件的生命週期結束時,會自動執行析構函式。析構函式的定義 define a h class a endif 虛析構函式與純虛析構函式的定義 假定類名為a define a h class a endif define a h class ...
C 學習筆記 虛析構函式與純虛析構函式
析構函式是當乙個物件的生命週期結束時,會自動執行析構函式。析構函式的定義 private int a int b int c endif 虛析構函式與純虛析構函式的定義 假定類名為a private int a int b int c endif endif 其中定義了純虛函式後,類a就成為了 抽象...
C 學習筆記 虛析構函式與純虛析構函式
開始學c 了,所以又重拾以前學習過的相關概念 析構函式是當乙個物件的生命週期結束時,會自動執行析構函式。析構函式的定義 private int a int b int c endif 虛析構函式與純虛析構函式的定義 假定類名為a private int a int b int c endif end...