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

obj转换成Bird是不是有点多余?

如果判断已经是Bird的指针了,为什么还要将obj转换一次,转换成Bird,再继续使用呢?

正在回答

2 回答

这么说吧,之所以进行这个转换是因为使用父类Flyable指针通过虚函数实现机制我们可以动态的是实现同名的虚函数,但是对于子类Bird中的非虚函数(觅食函数),要想调用则必须是Bird,所以要进行强制类型转换。

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

梦游病者

Flyable *obj强制转换成Bird *obj是吧?
2018-08-09 回复 有任何疑惑可以回复我~
#2

慕粉4325388 回复 梦游病者

嗯嗯,是的
2018-08-10 回复 有任何疑惑可以回复我~
#3

漂漂杰 提问者

嗯,之前想错了,谢谢
2018-08-16 回复 有任何疑惑可以回复我~

那直接再用Bird类定义一个新的变量多省事,使用dynamic_cast是不是有点多此一举??

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

六个蒸蛋

你是想 Bird* bird = obj 吗?这不行,因为父类指针不能给子类指针赋值。
2019-11-22 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

obj转换成Bird是不是有点多余?

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