-
typeid用來判斷類型
返回一個type_info對象的引用
如果想通過基類的指針獲得派生類的數據類型,基類必須帶有虛函數
只能獲取對象的實際類型
dynamic_cast轉化類型:
只能應用于指針和引用的轉換
要轉換的類型中必須包含虛函數
轉換成功返回子類的地址,失敗返回NULL
查看全部 -
接口類(成員函數全為純虛函數的類)無cpp文件
查看全部 -
接口類例子
查看全部 -
僅含有純虛函數的類為接口類
查看全部 -
抽象類
查看全部 -
純虛函數
查看全部 -
virtual的限制4
查看全部 -
virtual的限制3
查看全部 -
virtual的限制2
查看全部 -
virtual的限制1
查看全部 -
虛函數(子類定義時最好也加上virtual關鍵字)
查看全部 -
多態:指相同對象受到不同消息或不同對象收到相同消息時產生不同的動作。
靜態多態(早綁定):在運行前,編譯階段就已確定要調用哪個函數,很早就把函數編譯進去。
動態多態(晚綁定):不同對象,下達相同指令,產生不同動作。前提:以封裝與繼承為基礎。至少要兩個類,父類與子類,用三個類時,動態多態表現地會更明顯。
實現多態的成員函數:用virtual修飾函數,使之成為虛函數查看全部 -
typeid,typeid.name
dynamic_cast
查看全部 -
將obj這個指向轉換為Plane的指針或者是Bird的指針
typeid(*obj).name() 打印的是某個類型
typeid能打印的指針,是指針本身的類型
dynamic_cast轉換必須是指針或者是引用,而且要轉換的類型中必須含有虛函數查看全部 -
接口類Flyable,沒有cpp文件,因為根本不需要去實現。 并且沒有構造函數和析構函數,只有2個純虛函數。
構造函數是用來實例化(或者叫構造對象)用的, 而接口是不允許進行實例化的, 因此沒有構造函數接口類只含有純虛函數。
接口類不能被實例化,但可以有指向接口類的指針,以便于操縱各個子類。
查看全部 -
純虛函數 = 抽象函數
含有純虛函數的類 = 抽象類
查看全部 -
1、普通函數(全局函數)不能是虛函數
2、靜態成員函數不能是虛函數
3、內聯函數不能是虛函數
4、構造函數不能是虛函數
查看全部 -
靜態多態:通過傳入參數的不同調用不同的函數(函數重載)
動態多態:通過父類指針指向不同子類對象,令不同的子類對象調用各自子類重寫的函數。
為什么需要虛函數/抽象函數?
因為動態多態,是通過父類指針指向不同子類對象實現的。而用指針調用同名函數時,默認調用的是父類的函數。
所以需要將父類函數寫成虛函數,讓PC知道需要調用的是所指向子類的函數。
查看全部 -
不同的對象,接收同一參數。
執行情況和輸出結果不同,就稱為“多態”
查看全部 -
1、異常處理關鍵字try...catch...和throw就是將主邏輯放在try塊里,異常處理邏輯放在catch里面。 基本思想:主邏輯與異常處理分離。好處看上去整齊,非常容易理解。
2、try與catch可以是一對多的關系,第三種方式catch(...)是指throw拋出異常后,catch都能捕獲到異常的寫法;
3、異常處理與多態的關系:例子中catch中為父類引用對象,可以捕獲兩種拋出異常,并通過子類對象調用相應函數;
查看全部
舉報