-
RTTI運用:typeid(*obj).name() typeid(*obj)查看全部
-
RTTI:運行時類型識別查看全部
-
執行完子類的析構函數會自動執行父類的析構函數查看全部
-
virtual關鍵字的使用限制: 1.不能修飾普通函數,局限于成員函數 2.不能修飾靜態成員函數,因為靜態函數跟類同生共死 3.不能修飾內聯函數,使用的話會忽視內斂inline 4.不能修飾構造函數查看全部
-
virtual->析構函數,虛析構函數來解決,動態多態的內存泄露問題查看全部
-
虛析構函數 virtual ~Shape(){} virtual ~Circle(){}//子類可以不寫virtual 此時, Shape *shape1=new Circle(1.0) 先執行父類Shape構造函數,再執行子類Circle構造函數 delete shape1;先執行子類Circle析構函數,再執行父類Shape析構函數查看全部
-
void doSomething(Movable *obj) { obj->move(); if(typeid(*obj)==typeid(Bus)) { Bus *bus=dynamic_cast<Bus*>(obj); bus->carry(); } if(typeid(*obj)==typeid(Tank)) { Tank *tank=dynamic_cast<Tank*>(obj); tank->fire(); } } 判斷*obj是否是Bus類型,如果是則將obj指針轉化成Bus的指針并賦值給新的指針*bus查看全部
-
RTTI的含義是運行時類型識別; RTTI技術可以通過父類指針識別其所指向對象的真實數據類型; 運行時類型別必須建立在虛函數的基礎上,否則無需RTTI技術查看全部
-
不能修飾內聯函數查看全部
-
虛析構函數,virtual不能修飾普通函數(全局函數),必須是成員函數;不能修飾靜態成員函數;不能修飾構造函數;查看全部
-
一個內存單元查看全部
-
函數參數(形參)是指針時,調用函數實參是地址,例如定義void flymatch(flyable *f1,flyable *f2){},調用時flymatch(&p1,&p2)查看全部
-
僅含有純虛函數的類叫接口類查看全部
-
類里有數據成員,實例化對象時后面要跟上初始化數據。如// 通過動物類實例化狗類 Animal *p=new Dog("狗類");Dog類里有數據成員m_strname查看全部
-
只有函數聲明沒有函數定義的虛函數是純虛函數; 含有純虛函數的類叫做抽象類; 不可以使用含有純虛函數的類實例化對象; 可以使用含有純虛函數的類實例化對象。查看全部
舉報
0/150
提交
取消