作用:作為基類使用的類應該具有虛析構函式,以保證在刪除基類指標(動態分配的物件)時,根據指標實際指向的物件進行適當的析構。
請看下面這段**;
#include class a
~a()
virtual void dosomething()
};class b : public a
~b()
void dosomething()
};int main(int argc, char** argv)
執行結果:
可以看到:b的析構函式式沒有被執行的,這在平時的程式設計中是非常危險的。
為了能夠正確執行a和b的析構,我們將a的析構函式改為虛析構函式。
#include class a
virtual ~a()
virtual void dosomething()
};class b : public a
~b()
void dosomething()
};int main(int argc, char** argv)
執行結果:
可見,此時可以先執行b的析構,再執行a的析構。並不是所有的析構函式都需要寫成虛函式,因為當類中含有虛函式的時候,編譯器會給類新增乙個虛函式表,裡面用來放虛函式指標,這樣會增加類的儲存空間。
虛析構函式的作用
析構函式的作用就在於我們呼叫完乙個類物件時,為了避免記憶體洩漏,我們必須刪除這個類物件,這時析構函式就派上用場了。但是,當我我們定義乙個基類指標指向派生類後,再刪除這個指標時我們會發現,程式只是呼叫了基類的析構函式,卻沒有呼叫派生類的析構函式。為了解決這個問題,虛析構函式閃亮登場!當!當!當!虛析構...
虛析構函式的作用
我們知道,用c 開發的時候,用來做基類的類的析構函式一般都是虛函式。可是,為什麼要這樣做呢?下面用乙個小例子來說明 有下面的兩個類 class clxbase public clxbase virtual clxbase virtual void dosomething class clxderiv...
虛析構函式的作用
虛析構函式的作用 析構函式的作用 類的析構函式是為了釋放記憶體資源,析構函式不被呼叫的話就會造成記憶體洩漏。虛析構函式 定義為虛析構函式是為了當用乙個基類的指標刪除乙個派生類的物件時,派生類的析構函式會被呼叫。但並不是要把所有類的析構函式都寫成虛函式。只有當乙個類被用來作為基類的時候,才把析構函式寫...