例子:
#include #include #include using namespace std;
class per1{
public:
per1(){cout<<"create per1"<
create per1
create per2
exit per2
delete p
exit per1
不加virtual的結果是:
create per1
create per2
exit per1
結論:當用乙個基類的指標刪除乙個派生類的物件時
,如果基類的析構函式沒有加virtual宣告,子類的析構函式將不會執行,造成記憶體洩漏
為多型基類宣告virtual析構函式
書籍 effective c 中的條款7 讀書筆記 條款7的內容,可以大致總結為下面幾個問題 問題1 什麼是多型基類?問題2 為什麼要把多型基類的析構函式宣告為virtual析構函式?問題3 是不是應該把所有的類的析構函式宣告為virtual函式?下面來詳細回答上面三個問題 問題1 什麼是多型基類?...
基類析構函式為virtual的好處
class base class child public base int main 上面 執行時,在生成child物件c時,實際上先呼叫基類base的建構函式,然後再呼叫child類的建構函式。當撤銷c時,先呼叫child的析構函式,然後在呼叫base的析構函式,也就是說,無論基類的析構函式是否...
為多型基類宣告virtual析構函式
一 中心內容 1 polymorphic 帶多型性質的 base classes應該宣告乙個virtual析構函式。如果class帶有任何virtual函式,它就應該擁有乙個virtual析構函式 2 classes的設計目的如果不是作為base classes使用,或不是為了具備多型性,就不該宣告...