基類加析構函式加virtual的重要性

2021-07-03 01:16:34 字數 380 閱讀 3519

例子:

#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使用,或不是為了具備多型性,就不該宣告...