多型分為兩類
(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...