-
父類指針指向子類對象,只能通過虛函數(shù)來訪問子類所特有的數(shù)據(jù)成員。查看全部
-
delete 父類指針,只執(zhí)行父類析構(gòu)函數(shù)
delete 子類指針,執(zhí)行子類,父類析構(gòu)函數(shù)
查看全部 -
Rect.h
查看全部 -
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();
??? }
}查看全部 -
可以直接用 IndexException 實例化一個對象并拋出
查看全部 -
throw?string("Invalid?index!"); //?則捕捉為 try{ }catch(string?&str){ }
查看全部 -
catch(...)?//?可以捕捉所有類型錯誤,兜底做法 { }
查看全部 -
c++ 中 try...catch... 、throw 邏輯
查看全部 -
Flyable?*p?=?new?Bird(); cout?<<?typeid(p).name()?<<?endl;?//?class?Flyable?* cout?<<?typeid(*p).name()?<<?endl;?//?class?Bird
查看全部 -
int?i?=?0; cout?<<?typeid(i).name()?<<?endl;?//?int
查看全部 -
使用 typeid 和 dynamic_cast 來在運行時決定執(zhí)行某個
查看全部 -
type_info?的類: class?type_info? { public: ????const?char*?name()?const; ????bool?operator==(const?type_info&?rhs)?const; ????bool?operator!=(const?type_info&?rhs)?const; ????int?before(const?type_info&?rhs)?const; ????virtual?~type_info(); private: ????? }
查看全部 -
typeid 的注意事項:
查看全部 -
RTTI:
typeid(*obj).name() typeid(*obj)?==?typeid(Bird); Bird?*bird?=?dynamic_cast<Bird?*>(obj);
查看全部 -
// 多繼承
class?Plane?:?public?Flyable,?public?CanShot { ????virtual?void?aim(){} ????virtual?void?reload(){} }
查看全部
舉報