-
RTTI:運(yùn)行時類型識別 typeid(*obj).name()打印出obj這個指針指向的實(shí)際的對象類型 對類型進(jìn)行比對:if{typeid(*obj)==typeid(Bird)} dynamic_cast< ?>轉(zhuǎn)換類型,< >中是要轉(zhuǎn)化成為的類型,例如:Bird *bird = dynamic_cast<Bird *>(obj);(obj)轉(zhuǎn)化為Bird * 類型 dynamic_cast用法的注意事項:只能應(yīng)用于指針和引用之間的轉(zhuǎn)換,即< >中只能是某一類型的指針或者是某一類型的引用;要轉(zhuǎn)換的類型中,必須包含虛函數(shù);轉(zhuǎn)換成功返回子類的地址,失敗返回NULL typied的注意事項:type_id 返回一個type_info對象的引用;如果想通過基類的指針獲得派生類的數(shù)據(jù)類型,基類必須帶有虛函數(shù);只能獲取對象的實(shí)際類型;更多關(guān)于dynamic_cast知識詳見https://blog.csdn.net/pngynghay/article/details/42679791
查看全部 -
1、接口類:僅含有純虛函數(shù)的類,類中無數(shù)據(jù)成員,只有成員函數(shù),且都為純虛函數(shù);
2、接口類更多地表達(dá)一種能力或者協(xié)議;
如:void flyMatch(Flyable *a,Flyable *b)//飛行比賽
//要求傳入一個會飛對象的指針,此時鳥類(公有繼承能飛類)的對象指針可以傳入進(jìn)來
{
??? ....
??? a->takeoff();
??? b->takeoff();
??? a->land();
??? b->land();查看全部 -
1、抽象類無法實(shí)例化對象;?
2、抽象類的子類也可以是抽象類;
查看全部 -
虛函數(shù)使用限制:1、普通函數(shù)不能是虛函數(shù),必須是成員函數(shù);
2、 靜態(tài)成員函數(shù)不能是虛函數(shù)(static)
3、內(nèi)聯(lián)函數(shù)不能是虛函數(shù)(inline)
4、構(gòu)造函數(shù)不能為虛函數(shù)
查看全部
舉報