1.析構函式是否應為虛函式問題?
2.成員函式的虛函式問題?
3.析構函式是否可以為純虛函式問題?
說明:僅在使用父類指標指向子類物件時有區別
當析構函式非虛函式時,使用父類指標指向子類物件,在析構時將不會呼叫子類析構函式
當析構函式是虛函式時,使用分類指標指向子類物件,在析構時會呼叫子類析構函式,且呼叫順序為:先呼叫子類析構函式,再呼叫父類析構函式
所以,為了能夠正確的呼叫物件的析構函式,一般要求具有層次結構的頂級類,定義其析構函式為虛函式。因為在delete乙個抽象類指標時候,必須要通過虛函式找到真正的析構函式。
**詳情
class cbase
~cbase() //析構函式未加virtual時
};class cson:public cbase
~cson()
};int main()
說明:僅在使用父類指標指向子類物件時有區別,也是c++實現多型的關鍵
當成員函式非虛函式時,使用父類指標指向子類物件,在呼叫此成員函式時,將呼叫父類成員函式
當成員函式是虛函式時,且子類重寫了該函式,使用父類指標指向子類物件,在呼叫此成員函式時,將呼叫子類成員函式
父類指標指向父類物件,或子類指標指向子類物件時,不論成員函式是否是virtual,都會呼叫自己的成員函式,沒有影響
**詳情
class cbase
//成員函式未加virtual時
};class cson:public cbase
};int main()
**詳情
class cbase
virtual ~cbase() = 0;
};cbase::~cbase() //注:必須寫實現,必須在類外
class cson:public cbase
~cson()
};int main()
C 虛函式 純虛函式
1 基本概念 虛函式是在基類中使用關鍵字virtual宣告的函式。在派生類中重新定義基類中定義的虛函式時,會告訴編譯器不要靜態鏈結到該函式。我們想要的是在程式中任意點可以根據所呼叫的物件型別來選擇呼叫的函式,這種操作被稱為動態鏈結,或後期繫結。您可能想要在基類中定義虛函式,以便在派生類中重新定義該函...
C 虛函式 純虛函式
include qdebug class animal void animal animal 即要實現基類animal的animal函式 假如在dog子類中沒有實現animal 函式,則會呼叫基類的animal 函式。即列印 what is the animal 假如在dog子類中實現了animal...
虛函式 純虛函式
一 定義.純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加 0 virtual void funtion1 0 二 引入原因 1 為了方便使用多型特性,我們常常需要在基類中定義虛函式。2 在很多情況下,基類本身生成...