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

为什么不加virtual就会显示父类cout 内容而不是计算式?不解?

不加virtual的话,同名函数,父类会被子类隐藏,为什么还能调用出来父类的,不解?

正在回答

2 回答

符号(变量)记录了地址,类型决定了它会被怎么解析,在C++里定义一个变量也要声明类型的。

虽然这是一个子类对象的内存块,但是它用父类指针去解释这堆内存是什么(这是合法的),调用这个函数的时候是用父类定义的函数.

virtual关键字则声明调用这个函数的时候要绕一下(具体实现是用虚函数表实现)。

不用virtual声明:调用就直接找到函数的地址(编译的时候就确定了)

用virtual声明:调用的时候去找虚函数表,通过虚函数表找函数的地址。

c++语法复杂就是因为给人提供了多种选择。看应用场景.

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

域 ::

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

举报

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

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

进入课程

为什么不加virtual就会显示父类cout 内容而不是计算式?不解?

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