-
父类指针指向子类对象,只能通过虚函数来访问子类所特有的数据成员。查看全部
-
delete 父类指针,只执行父类析构函数
delete 子类指针,执行子类,父类析构函数
查看全部 -
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 来在运行时决定执行某个
查看全部 -
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(){} }
查看全部
举报
0/150
提交
取消