C++多型,虛擬函式,虛擬函式表,純虛擬函式
阿新 • • 發佈:2018-11-09
1、多型性
指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實現動作。
C++支援兩種多型性:編譯時多型性,執行時多型性。
a、編譯時多型性:通過過載函式實現 ,模板(2次編譯)
b、執行時多型性:通過虛擬函式實現。
2、覆蓋,隱藏,過載
過載,靜態多型,一個類裡面
覆蓋, 虛擬函式 ,同參數,同名稱,同返回
隱藏 :
1.1 基類非虛擬函式,子類與父類同名稱(可能覆蓋一大片父類函式)
1.2 基類非虛擬函式,派生類宣告為virtual ,引數相同,此時virtual關鍵字失效
2.2 基類虛擬函式, 派生類不使用virtual, 形參不同,則丟失多型
2.3 基類和派生類都是 虛擬函式, 形參相同,返回值不同,報錯
//////////////////////////
多型典型應用,抽象工廠模式,
///////////////////////////////////////////////////////////
虛擬函式表,動態繫結如何實現?有時間更新
??????????????????
////////////////////////////////////
建構函式與解構函式是否能定義為虛擬函式?能否丟擲異常?
構造的時候必須要知道構造的東西結構吧,虛個雞毛。。。析構的時候需要動態析構吧,不然工廠模式只析構基類,記憶體不是炸了? 構造和析構執行到一半,丟擲異常,你構造個辦成品?釋放一半記憶體?可能以前真有人寫出這種程式碼吧。。
建構函式和解構函式中能呼叫虛擬函式嗎?
呼叫後不會使用(動態聯編)多型特性,不建議使用!