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...