為什麼先說析構函式,是因為這點更容易被忽略。
要注意:基類的析構函式一定要宣告成虛函式。
因為乙個派生類物件被析構時,首先呼叫基類的析構函式,如果此時基類的析構函式不是虛函式,那編譯器就不會在虛函式表中去尋找派生類重寫的析構函式,就會導致派生類的記憶體釋放不乾淨,從而導致記憶體洩漏。
在c++中基類的建構函式是不會被派生類重寫的。
可以將派生類的物件賦值給基類物件,此時基類物件的指標可以呼叫基類方法,如果基類方法宣告成了虛函式,則也可以呼叫派生類中的方法。基類的指標不能直接呼叫派生類中未在基類中宣告的虛函式方法。
#include using namespace std;
class a
virtual ~a() ;
virtual void work()
};//基類
class b :public a
~b()
void work()
}; //派生類
int main()
執行結果:
a的構造
b的構造
b工作b的析構
a的析構
以上就是本文的全部內容,如果不足之處,請批評指正。
類和物件 構造析構函式
a.類和物件 1.關鍵字class表明正宣告乙個類,類中資料成員 屬性 和資料功能 行為 經過封裝,使得使用者通過外部介面訪問。2.類的封裝隱藏了實現細節,同時也保證了資料的安全性。3.只要類的外部介面不變,內部實現細節再怎麼修改,使用類庫的程式也不用修改。4.物件是類型別的變數。5.內聯成員函式 ...
C 物件導向(二) 構造 析構函式
析構函式 destructor 構造 析構順序 建構函式 也叫構造器 在物件建立的時候回自動呼叫,一般用於完成物件的初始化工作 函式名與類同名,無返回值,可以有引數,可以過載,可以有多個建構函式 struct person person int age intmain 一旦自定義了建構函式,必須用其...
派生類的建構函式和析構函式(C 物件導向)
派生類的建構函式和析構函式的引進 派生類 不能繼承基類的建構函式和析構函式 派生類需要定義自己的建構函式和析構函式 派生類建構函式的語法 派生類名 派生類名 引數總表 基類名1 參數列1 基類名 引數名2 基類名n 引數名n 內嵌子物件1 參數列1 內嵌子物件2 參數列2 內嵌子物件n 參數列n 派...