C 學習筆記 虛析構函式

2021-07-10 03:23:51 字數 1242 閱讀 1764

我們直接上案例:

// 虛析構函式.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...