第8章 虛函數與多态性
多态性是指一個名字,多種語義;或界面相同,多種實作。
重載函數是多态性的一種簡單形式。
虛函數允許函數調用與函數體的聯系在運作時才進行,稱為動态聯編。
8.1 靜态聯編
聯編是指一個程式子產品、代碼之間互相關聯的過程。
靜态聯編,是程式的比對、連接配接在編譯階段實作,也稱為早期比對。重載函數使用靜态聯編。
動态聯編是指程式聯編推遲到運作時進行,是以又稱為晚期聯編。
switch語句和if語句是動态聯編的例子。
普通成員函數重載可表達為兩種形式:
1.在一個類說明中重載
例如:Show(int,char);
Show(char *,float);
2.基類的成員函數在派生類重載。有3種編譯區分方法:
(1)根據參數的特征加以區分
例如:Show(int,char);與Show(char *,float);不是同一函數,編譯能夠區分
(2)使用“::”加以區分
例如:A::Show();有别于B::Show();
(3)根據類對象加以區分
例如:Aobj.Show();調用A::Show();
Bobj.Show();調用B::Show();
重載函數的區分
//非const函數一般适用于變量對象
//const函數重載一般适用于常量對象