虛析構函式的作用

2021-07-28 08:07:38 字數 833 閱讀 2993

析構函式的作用就在於我們呼叫完乙個類物件時,為了避免記憶體洩漏,我們必須刪除這個類物件,這時析構函式就派上用場了。

但是,當我我們定義乙個基類指標指向派生類後,再刪除這個指標時我們會發現,程式只是呼叫了基類的析構函式,卻沒有呼叫派生類的析構函式。為了解決這個問題,虛析構函式閃亮登場!當!當!當!

虛析構函式只是在析構函式前面加上了乙個virtual而已,下面,我們通過程式來理解下,過程吧。

class base  

~base()

virtual void go()

};class derive :public base

~derive()

void go()

};void main()

上面的基類的析構函式並沒有被virtual宣告:執行結果如下

我們可以看到,上述程式只呼叫了基類的析構函式,這樣派生類沒有被刪除,容易導致記憶體洩漏。我們修改下程式

class base  

virtual ~base()

virtual void go()

};class derive :public base

~derive()

void go()

};void main()

再來看結果:

嗯,成功呼叫派生類的析構函式啦!

虛析構函式的作用

我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase public clxbase virtual clxbase virtual void dosomething class clxderiv...

虛析構函式的作用

虛析構函式的作用 析構函式的作用 類的析構函式是為了釋放記憶體資源,析構函式不被呼叫的話就會造成記憶體洩漏。虛析構函式 定義為虛析構函式是為了當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫。但並不是要把所有類的析構函式都寫成虛函式。只有當乙個類被用來作為基類的時候,才把析構函式寫...

C 虛析構函式的作用

c 中經常將基類的析構函式定義為虛函式。當用基類指標去去釋放乙個派生類物件時,如果基類的析構函式沒有定義為虛函式,則不會呼叫派生類的析構函式,這樣會造成記憶體洩漏。如下例子 note your choice is c ide include stdio.h include iostream usin...