1.靜态聯編,是程式的比對,連接配接在編譯階段實作,也稱為早期比對。重載函數使用靜态聯編。
2.動态聯編是指程式聯編推遲到運作時進行,是以又稱為晚期聯編。switch語句和if語句是動态聯編的例子。
3.靜态聯編
普通成員函數重載可表達為兩種形式
在一個類說明中重載
基類的成員函數在派生類重載。有3中編譯區分方法:
(1):根據參數的特征加以區分
(2):使用”::”加以區分
例如:a::show();
有别于b::show()
(3):根據類對象加以區分
例如:aobj.show();
調用
a::show();
bobj.show(); 調用
b::show();
案例:
4.類指針的關系
基類指針和派生類指針與基類對象和派生類對象4種可能比對。
a:直接用基類指針引用基類對象。
b:直接用派生類指針引用派生類對象。
c:用基類指針引用一個派生類對象。
d:用派生類指針引用一個基類對象。
5.類與指針之間的關系
adynamic适用于虛函數
b類而言,資料是私有,代碼是公有的
c指針為空,指向一個類,可以直接調用方法
d涉及内部成員會崩潰,不涉及可以執行
e父類指針引用父類對象,完全正常引用
f子類指針引用子類對象,覆寫父類的同名函數
g父類指針引用子類對象,隻能引用父類中的函數
h子類指針,引用父類對象,子類不涉及内部資料的函數會調用成功
i涉及到内部資料的會調用成功,執行失敗
j子類指針可以引用父類的不重名的函數
k子類指針(不是pzi->fu::print();方法)無法引用父類的同名方法
案例如下:
fu.h
6.冠以關鍵字virtual的成員函數稱為虛函數。
實作運作時多态的關鍵首先是要說明虛函數,另外,必須用基類指針調用派生類的不同實作版本。
7. 對于虛函數的總結:
a對于繼承的情況,如果自來實作了父類的同名函數,
b當指針調用的時候會一直調用父類的函數,當成員函數加了virtual
c關鍵字修飾之後,子類才會調用自己的函數。
8:純虛函數
案例2:
9.虛析構函數,在析構函數的前面加上virtual
案例代碼如下:
如果析構函數前加了virtual,運作結果如下:
10.
者多個虛函數,或者多個純虛函數都占四個位元組
案例說明如下: