多型性是物件導向程式設計中的乙個重要特徵,利用多型性可以設計和實現乙個易於拓展的系統。在c++語言中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式,發出同樣的訊息被不同型別的物件接收時,導致完全不同的行為。
多型性通過聯編實現。聯編是指乙個電腦程式自身彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法:靜態聯編和動態聯編。在c++中,根據聯編的時刻不同,存在兩種型別的多型性,即函式過載和虛函式。
虛函式:
在類的繼承層次結構中,在不同的層次中可以出現名字、引數個數和型別都相同而功能不同的函式。編譯器按照先自己後父類的順序進行查詢覆蓋,如果子類有父類相同原型的成員函式時,要想呼叫父類的成員函式,需要對父類重新引用呼叫。虛函式則可以解決子類和父類相同原型成員函式的函式呼叫問題。虛函式允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。
在基類中用virtual宣告成員函式為虛函式,在派生類中重新定義此函式,改變該函式的功能。
#includeusing namespace std;
class cemplyee
virtual void outputname()//定義了乙個虛成員函式
C 學習之多型
c 的類機制中有支援多型的技術來解決抽象程式設計,它用的是一種滯後 技術,這種技術,通過預先設定其成員函式的虛函式性質,使得任何 該成員函式的未定型別的物件操作在編譯時,都以乙個不確定的指標特殊地 引命代發 來編碼,到了執行時,遇到確定型別的物件,才突然制定其真正的行為。即滯後到執行時,根據具體型別...
c 學習之多型
多型分為兩類 1 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 2 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 1 靜態多型的函式位址早繫結 編譯階段確定函式位址 2 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 1 有繼承關係 2 子類重寫父類的...
C 學習筆記之 多型
目錄應用 計算器類 純虛函式和抽象類 虛析構和純虛析構 型別轉換 多型性提供介面與具體實現之間的另一層隔離,將 什麼 和 怎麼做 分開 分類 動態多型 函式位址晚繫結 include using namespace std 動物類 class animal class dog public anim...