c 學習之多型

2021-10-10 17:19:36 字數 1188 閱讀 9686

多型分為兩類

(1)靜態多型:函式過載和運算子過載屬於靜態多型,復用函式名

(2)動態多型:派生類和虛函式實現執行時多型

靜態多型和動態多型的區別

(1)靜態多型的函式位址早繫結—編譯階段確定函式位址

(2)動態多型的函式位址晚繫結—執行階段確定函式位址

動態多型滿足條件

(1)有繼承關係

(2)子類重寫父類的虛函式

動態多型使用

父類的指標或者引用指向子類物件

多型

在**執行時,根據傳入的型別,決定使用哪種類稱為多型

**示例(不使用虛函式)

#include

using

namespace std;

class

animal};

class

cat:

public animal};

void

test_dospeak

(animal &a)

intmain()

輸出結果

上面用基類的引用去引用派生類是被允許的,稱為向上強制轉換,這使得公有繼承不需要進行顯示型別轉換,該規則是is-a的一部分。

**示例(虛函式)

#include

using

namespace std;

class

animal};

class

cat:

public animal};

void

test_dospeak

(animal &a)

intmain()

輸出結果

C 學習之多型

多型性是物件導向程式設計中的乙個重要特徵,利用多型性可以設計和實現乙個易於拓展的系統。在c 語言中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式,發出同樣的訊息被不同型別的物件接收時,導致完全不同的行為。多型性通過聯編實現。聯編是指乙個電腦程式自身彼此關聯...

C 學習之多型

c 的類機制中有支援多型的技術來解決抽象程式設計,它用的是一種滯後 技術,這種技術,通過預先設定其成員函式的虛函式性質,使得任何 該成員函式的未定型別的物件操作在編譯時,都以乙個不確定的指標特殊地 引命代發 來編碼,到了執行時,遇到確定型別的物件,才突然制定其真正的行為。即滯後到執行時,根據具體型別...

C 學習筆記之 多型

目錄應用 計算器類 純虛函式和抽象類 虛析構和純虛析構 型別轉換 多型性提供介面與具體實現之間的另一層隔離,將 什麼 和 怎麼做 分開 分類 動態多型 函式位址晚繫結 include using namespace std 動物類 class animal class dog public anim...