-
class
查看全部 -
RTTI圖示
查看全部 -
typeid注意事項:
type_id返回一個type_info對象的引用;
如果想通過基類的指針獲得派生類的數據類型,基類必須帶有虛函數;
只能獲取對象的實際類型
查看全部 -
使用dynamic_cast注意事項:
只能應用于指針和引用的轉換;
要轉換的類型中必須包括虛函數;
轉換成功返回子類的地址,失敗返回NULL
查看全部 -
RTTI:運行時類型識別
if(typeid(*obj).name() == typeid(Bird))
Bird *bird = dynamic_cast<Bird *>(obj)
dynamic_cast注意事項:
? 只能應用于指針和引用的轉換,不能是對象;
? 要轉換和被轉換的類型中必須包含虛函數;
? 轉換成功返回子類地址,失敗返回NULL;
type_id注意事項:
? 返回一個type_info對象的引用;
? 如果想通過基類的指針獲得派生類的數據類型,基類必須帶有虛函數;
? 只能獲取對象的實際類型(不能傳入對象指針獲取指向對象的實際類型);
查看全部 -
僅含有純虛函數的類叫接口類,沒有數據成員。
查看全部 -
純虛函數:virtual int func() = 0;不需要去實現函數的時候用。
含有純虛函數的類叫抽象類。哪怕只含有一個純虛函數也叫抽象類。
不允許實例化抽象類對象。
抽象類的子類也可以是抽象類。
抽象類的子類只有把抽象類當中的所有純虛函數都做了實現,這個子類才可以實例化對象。
查看全部 -
虛繼承:菱形繼承,構造D對象時,不希望實例化2個A。
虛函數:多態,父類指針下命令,希望子類執行不同的動作。如果父類實現了虛構函數,子類可以實現也可以不實現該虛構函數。
虛析構函數:防止內存泄漏,父類指針指向子類對象,delete父類指針,希望能同時執行父類和子類的析構函數。
查看全部 -
delete 父類指針:只調用父類的析構函數,除非用virtual(虛析構函數)
delete 子類指針:既調用父類析構函數,又調用子類析構函數
virtual不能修飾普通函數(不在類里面的函數)、靜態成員函數、內聯函數(inline會失效)、構造函數。
查看全部 -
typeid(RTTI)的注意事項
查看全部 -
dynamic_cast(RTTI)的注意事項
查看全部 -
純虛函數就是用來表示目的不明確的函數
查看全部 -
純虛函數的構造樣式
查看全部 -
delete 后加父類指針只能執行父類的析構函數,后加子類指針,既能執行父類析構函數,又能執行子類析構函數
查看全部 -
catch(類型 &e)
可將拋出值打印出來
查看全部
舉報