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