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