为了账号安全,请及时绑定邮箱和手机立即绑定

判断完是哪一类之后直接 调用land 和 foraging不可以吗?

if(typeid(*obj)==typeid(Bird))

{obj->foraging;

}

结果不一样吗?为什么一定要转换指针类型呢

正在回答

2 回答

obj 是指向基类的指针,不能直接操作子类的方法。

dynamic_cast主要用于在多态的时候,它允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转换类型,把基类指针(引用)转换为派生类指针(引用)。

3 回复 有任何疑惑可以回复我~
#1

present21 提问者

非常感谢!
2016-05-05 回复 有任何疑惑可以回复我~

基类指向子类的指针只可以调用基类自己拥有的成员,而觅食和搬运这两个是子类特有的成员,父类指针无法直接调用。所以需要将父类指针转化为子类(Bird)指针,这样子才可以调用子类独有的成员函数!



1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

判断完是哪一类之后直接 调用land 和 foraging不可以吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信