课程
/后端开发
/C++
/C++远征之多态篇
不加virtual的话,同名函数,父类会被子类隐藏,为什么还能调用出来父类的,不解?
2019-10-05
源自:C++远征之多态篇 2-1
正在回答
符号(变量)记录了地址,类型决定了它会被怎么解析,在C++里定义一个变量也要声明类型的。
虽然这是一个子类对象的内存块,但是它用父类指针去解释这堆内存是什么(这是合法的),调用这个函数的时候是用父类定义的函数.
virtual关键字则声明调用这个函数的时候要绕一下(具体实现是用虚函数表实现)。
不用virtual声明:调用就直接找到函数的地址(编译的时候就确定了)
用virtual声明:调用的时候去找虚函数表,通过虚函数表找函数的地址。
c++语法复杂就是因为给人提供了多种选择。看应用场景.
域 ::
举报
本教程将带领大家体会面向对象三大特性中的多态特性