虛析構函式的作用

2021-10-06 21:33:26 字數 1253 閱讀 9248

虛析構函式的作用

析構函式的作用

類的析構函式是為了釋放記憶體資源,析構函式不被呼叫的話就會造成記憶體洩漏。

虛析構函式

定義為虛析構函式是為了當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫。

但並不是要把所有類的析構函式都寫成虛函式。只有當乙個類被用來作為基類的時候,才把析構函式寫成虛函式。

示例**:

從執行結果中可以的到:

-當子類指標指向子類時,析構函式會先呼叫子類析構在呼叫父類析構,釋放所有記憶體。

- 但父類指標指向子類時,只會呼叫父類析構函式,子類析構函式不被呼叫,會造成記憶體洩漏。

所以我們才需要虛析構函式,將父類的析構函式定義為虛析構函式,那麼父類指標會先呼叫子類析構,在呼叫父類析構,是記憶體得到釋放。

從執行結構可以看出:

- 將父類定義為虛析構函式後,當定義一直父類指標指向子類時,在delete時可以呼叫子類和父類的析構函式,釋放所有的記憶體,防止記憶體洩漏。

虛析構函式的作用

析構函式的作用就在於我們呼叫完乙個類物件時,為了避免記憶體洩漏,我們必須刪除這個類物件,這時析構函式就派上用場了。但是,當我我們定義乙個基類指標指向派生類後,再刪除這個指標時我們會發現,程式只是呼叫了基類的析構函式,卻沒有呼叫派生類的析構函式。為了解決這個問題,虛析構函式閃亮登場!當!當!當!虛析構...

虛析構函式的作用

我們知道,用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...