课程
/后端开发
/C++
/C++远征之多态篇
if(typeid(*obj)==typeid(Bird))
{obj->foraging;
}
结果不一样吗?为什么一定要转换指针类型呢
2016-05-04
源自:C++远征之多态篇 4-1
正在回答
obj 是指向基类的指针,不能直接操作子类的方法。
dynamic_cast主要用于在多态的时候,它允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转换类型,把基类指针(引用)转换为派生类指针(引用)。
present21 提问者
基类指向子类的指针只可以调用基类自己拥有的成员,而觅食和搬运这两个是子类特有的成员,父类指针无法直接调用。所以需要将父类指针转化为子类(Bird)指针,这样子才可以调用子类独有的成员函数!
举报
本教程将带领大家体会面向对象三大特性中的多态特性