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

为什么不加virtual就会调用父类的calcArea() 而不调用子类的calcArea()呢?

在堆实例化后指向calcArea()为什么会直接调用父类的而不调用子类的呢

正在回答

1 回答

当然,一下只是个人观点。本人是小白,接受各位dalao的批判。

前提是你用父类对象去实例化子类。

如果没有virtual,则不生成虚函数表指针,则只能找到父类的成员函数。如果加上virtual后,会生成,并且可以通过此函数表找到子类的虚函数指针,继而找到子类的虚函数。

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

慕勒2752433

依我拙见,你这句话有一句说反了。 应该是用子类实例化一个父类,而不是用父类实例化子类。 父类对象由子类实例化,即是对象的多态性中的一种类型之一:向上转型 父类 父类对象=子类实例 意思就是说:我们是使用子类来实例化对象,而这个对象却是披上了“父类对象”的名称
2016-10-09 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么不加virtual就会调用父类的calcArea() 而不调用子类的calcArea()呢?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号