C 虛析構函式的作用

2021-06-29 09:22:18 字數 834 閱讀 8288

1、作用

為了在實現多型的時候不造成記憶體洩露,

如果基類析構函式前不加vitual,派生類物件被銷毀後,只會呼叫基類的析構函式,而不會去呼叫派生類的析構函式。

2、對於正常的函式,如果基類中宣告為virtual,則派生類可以不用再寫virtual

[c-sharp]view plain

copy

//#include "stdafx.h"

class base  

virtual ~base()  

virtual

void func()  

private:  

int m_idata;  

};  

class derived : public base  

~derived()  

void func()  

};  

class derived2 : public derived  

~derived2()  

void func()  

};  

int main(int argc, char* argv)    

結果:base func!

derived func!

derived2 func!

base destructor!

derived destructor!

base destructor!

derived2 destructor!

derived destructor!

base destructor!

C 虛析構函式的作用

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

虛析構函式的作用

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

虛析構函式的作用

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