虛函式與多型性 純虛函式的區別聯

2021-08-09 12:40:51 字數 765 閱讀 1178

用virtual關鍵字宣告的函式叫做虛函式。

#include

class animal

void sleep()

virtual void breathe()

};class fish:public animal

};void fn(animal *pan)

void main()

上面**在派生類中重新定義了基類中的 virtual void breathe()函式,為虛函式。全域性函式的引數為指向animal類的指標變數。主函式中定義了定義了乙個animal類的指標,乙個fish類的物件fh,將fh的位址賦給了指向animal類的指標變數pan,然後呼叫fn()函式。

程式輸出為  fish bubble

因為c++編譯器在編譯時發現animal類的breach()函式是虛函式,就會採用遲繫結技術(就是編譯時不確定具體呼叫的函式,而是執行時根據物件的型別確定)。

c++的這種能力就叫做多型性。概括多型性就是:在基類的函式前面加上virtual,在派生類中重寫該函式,執行時就會根據具體的物件來呼叫相應的函式。

純虛函式:

如果將類中breach()函式定義成如下形式

virtual void breathe()=0;

breach()函式就為純虛函式,純虛函式指只表明而不具體實現的虛成員函式。包含純虛成員函式的類成為抽象類,這種類不能宣告物件只能作為基類為派生類服務。純虛函式可以讓類先有乙個操作,而沒有操作內容,在定義派生類再定義內容。在派生類中必須完全實現純虛函式的內容。

虛函式與多型性

實驗內容 定義基類base,其資料成員為高h,定義成員函式disp 為虛函式,由基類派生出長方體類和圓柱類,並在兩個派生類中定義成員函式disp 為虛函式。在主函式中,用基類base定義指標p,用指標p動態呼叫虛函式disp 顯示面積。虛函式 它是基類中的成員函式,並在派生類中被過載。派生類中的虛函...

多型性與虛函式

1.函式過載 overloading 與靜態聯編 static binding 函式過載 overloading 指的是,允許多個不同函式使用同乙個函式名,但要求這些同名函式具有不同的參數列。參數列中的引數個數不同 參數列中對應的引數型別不同 參數列中不同型別引數的次序不同。例 intabs int...

虛函式與多型性

include stdafx.h include using namespace std class animal void sleep void breathe class fish public animal void fn animal pan int tmain int argc,tchar...