void doSomething(Flyable *obj) { cout << typeid(*obj).name() <<endl; obj->takeoff(); if(typeid(*obj) == typeid(Bird)) { Bird *bird = dynamic_cast<Bird * >(obj); bird->foraging(); } if(typeid(*obj) == typeid(Plane)) { Plane *plane = dynamic_cast<Plane * >(obj); plane->carry(); } obj->land(); }
void doSomething(Flyable *obj) // 做些事情 { obj->takeoff(); cout << typeid(*obj).name() << endl; // 输出传入对象类型("class Bird" or "class Plane") if(typeid(*obj) == typeid(Bird)) // 判断对象类型 { Bird *bird = dynamic_cast<Bird *>(obj); // 对象转化 bird->foraging(); } obj->land(); return; };