C 虛析構函式的作用

2021-06-21 12:17:03 字數 523 閱讀 2784

c++中經常將基類的析構函式定義為虛函式。

當用基類指標去去釋放乙個派生類物件時,如果基類的析構函式沒有定義為虛函式,則不會呼叫派生類的析構函式,這樣會造成記憶體洩漏。

如下例子:

/* note:your choice is c ide */

#include "stdio.h"

#include"iostream"

using namespace std;

class a

virtual ~a()

};class b:public a

~b()

};void main()

實驗結果為:

a construct

b construct

~b~a

此時析構函式呼叫的順序剛好和構造函式呼叫順序相反。

如果將基類析構函式的關鍵字virtual  去掉,實驗結果為:

a construct

b construct

~a可見派生類的析構函式並為被呼叫。

C 虛析構函式的作用

1 作用 為了在實現多型的時候不造成記憶體洩露,如果基類析構函式前不加vitual,派生類物件被銷毀後,只會呼叫基類的析構函式,而不會去呼叫派生類的析構函式。2 對於正常的函式,如果基類中宣告為virtual,則派生類可以不用再寫virtual c sharp view plain copy inc...

虛析構函式的作用

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

虛析構函式的作用

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