c++語言為我們提供了一種語法結構,通過它可以指明乙個
虛函式只是提供了乙個
可被子型別改寫的介面。但是,它本身並不能通過虛擬機制被呼叫,這就是純虛函式(pure
virtual function)。
純虛函式是在
基類中宣告的虛函式,它在基類中沒有定義,但要求任何
派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加「=0」
virtual void funtion1()=0
1、為了方便使用
多型特性,我們常常需要在
基類中定義
虛函式。
2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為乙個基類可以派生出老虎、孔雀等子類,但動物本身生成物件明顯不合常理。
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual returntype function()= 0;),則
編譯器要求在
派生類中必須予以重寫以實現多型性。同時含有純虛函式的類稱為
抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。
1、 多型性
指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。c++支援兩種多型性:編譯時多型性,
執行時多型性。
a.編譯時多型性:通過
過載函式實現
b 執行時多型性:通過虛函式實現。
2、虛函式
虛函式是在
基類中被宣告為virtual,並在
派生類中重新定義的成員函式,可實現成員函式的動態
過載3、
抽象類包含純虛函式的類稱為抽象類。由於抽象類包含了沒有定義的純虛函式,所以不能定義抽象類的物件。
C 虛構函式的使用
cpp view plain copy include using namespace std class father father class son public father son void main 在main函式中如上 所示,我們用乙個父指標指向子類物件,然後用delete釋放掉。這樣...
虛建構函式和虛析構函式
1.析構函式可以為虛函式,且基類的析構函式一般均為虛函式。原因在於 通過基類指標delete base 時,可以通過虛的析構函式來釋放掉派生類獨自占用的記憶體,避免資源洩露。2.建構函式不可為虛函式。原因在於 建構函式是在物件完全構造之前執行的,在建構函式執行的時候,物件的動態型別還不完整。構造乙個...
虛建構函式和虛析構函式
建構函式不能是虛成員函式,但析構函式可以是虛成員函式。class a public a a class b public a public b b int main a ptr ptr new b delete ptr 上述new操作會使建構函式a b 均被呼叫,因為ptr是指向b的物件的指標,因此...