多型與虛函式

2021-10-24 02:24:36 字數 1390 閱讀 3513

#include

#include

using

namespace std;

class

grand

virtual

void

watchtv()

void

say(

)virtual

~grand()

};class

father

:public grand

virtual

void

watchtv()

void

say(

)virtual

~father()

};class

son:

public father

void

watchtv()

void

say()~

son()}

;int

main()

輸出為

this is the grand constructor!

grand is saying to watchtv!

grand is watching tv:beijintv

this is the father constructor!

father is saying to watchtv!

father is watching tv:beijintv

this is the son constructor!

son is saying to watchtv!

son is watching tv:guangdongtv

father is saying to watchtv!

son is watching tv:guangdongtv

this is the son destructor!

son is watching tv:guangdongtv

this is the father destructor!

father is watching tv:guangdongtv

this is the grand destructor!

grand is watching tv:guangdongtv

如果在建構函式中呼叫虛函式,虛函式表現為該類中虛函式的行為,即父類構造函式呼叫虛函式,則虛函式為父類中的虛函式;子類建構函式中呼叫虛函式,則呼叫的是子類中的虛函式;

如果不是在建構函式中呼叫虛函式,則會首先檢視虛函式表,如果有例項實現,則呼叫例項。比如:父類中有虛函式watchtv,則呼叫父類中watchtv時,則因為子類實現了watchtv,則呼叫子類的watchtv。

虛函式與多型

前三者為靜態繫結,虛函式為動態繫結 動態繫結 只有通過基類指標或引用呼叫虛函式才能引發動態繫結 虛函式不能被宣告為靜態 include using namespace std class base virtual void fun2 void fun3 class derived public ba...

虛函式與多型

多型性 呼叫同乙個函式名,可以根據需要實現不同的功能。虛函式 可以在程式執行時通過呼叫相同的函式名而實現不同功能的函式稱為虛函式。編譯時的多型性 函式過載 執行時的多型性 虛函式 執行時的多型性是指在程式執行之前,根據函式名和引數無法確定應該呼叫哪乙個函式,必須在程式的執行過程中,根據具體的執 況來...

虛函式與多型

多型性 c 支援兩種多型性 編譯時多型性,執行時多型性 虛函式 派生類可以不顯式地用virtual宣告虛函式,這時系統就會用以下規則來判斷派生類的乙個函式成員是不是虛函式 一般習慣於在派生類的函式中也使用virtual關鍵字,以增加程式的可讀性 該函式是否與基類的虛函式有相同的名稱 引數個數及對應引...