C 學習筆記23 虛函式和多型

2021-10-02 13:39:38 字數 1150 閱讀 6847

虛函式

1 虛函式定義:在類的定義中,前面有virtual關鍵字的成員函式就是虛函式。

class base

;2 int base::get(){}

--virtual關鍵字只用在類定義裡的函式宣告中,寫函式體時不用。

--建構函式和靜態成員函式不能是虛函式

3 虛函式和普通函式差別:虛函式可以參與多型,而普通函式不可以。

多型的表現形式一

1 派生類的指標可以賦給基類指標

2 通過基類指標呼叫基類和派生類中的同名虛函式時:

(1)若該指標指向乙個基類的物件,那麼被呼叫是基類的虛函式

(2)若該指標指向乙個派生類的物件,那麼被呼叫的時派生類的虛函式

這種機制就叫做多型

3 例子(見本工程duotai1.cpp)

//

// 多型表現形式一案例

//#include

using

namespace std;

classa}

;classb:

public a};

intmain()

多型的表現形式二

1 派生類的物件可以賦給基類物件

2 通過基類引用呼叫基類和派生類中的同名虛函式時:

(1)若該引用引用的是乙個基類的物件,那麼被呼叫是基類的虛函式

(2)若該引用引用的是乙個派生類的物件,那麼被呼叫的是派生類的虛函式

這種機制也叫做「多型」

3 例子(見duotai1.cpp)

多型簡單例子(見本工程duotai2.cpp)

//

// 多型簡單例子

//#include

using

namespace std;

classa}

;classb:

public a};

classd:

public a};

classe:

public b};

intmain()

多型的用途:

增強程式的可擴充性

c 多型和虛函式

c 有三大特性 封裝,繼承,多型 多型是物件導向程式設計的乙個重要特徵,多型就是乙個東西有多重狀態,具有不同功能的函式可以用乙個函式名,這樣就可以用乙個函式名實現不同的功能 靜態多型和動態多型靜態多型是利用過載實現的,在程式編譯時確定要呼叫的是哪個函式,也稱為編譯時多型。動態多型是利用虛函式實現的,...

c 虛函式和多型 虛函式表

參考 1 c primer plus 第六版 2 中國大學慕課 程式設計與演算法 三 在類的定義中,前面有virtual關鍵字的成員函式就是虛函式 class a 類外函式定義 void a function 說明 1 virtual關鍵字只需要在類定義裡的函式宣告時加上,函式定義時不用加 2 建構...

C 學習筆記(十三)動態多型 虛函式

include using namespace std 基類 class animal 虛函式 virtual void sleep class cat public animal 虛函式 的重定義 函式重寫 void sleep class fish public animal 函式 重定義 vo...