面试题答案
一键面试- 输出结果:
Base::print()
- 原因解释:
- 在C++ 中,非虚函数的调用是在编译期静态绑定的。
- 当定义
Base* basePtr = new Derived();
时,basePtr
的类型是Base*
。 - 调用
basePtr->print()
,由于print
函数在Base
类中是非虚函数,编译器根据指针basePtr
的静态类型(即Base*
)来确定调用哪个print
函数。所以调用的是Base
类中的print
函数,输出Base::print()
。如果print
函数被声明为虚函数,并且在Derived
类中被重写,那么将发生动态绑定,调用的就是Derived
类中的print
函数,输出Derived::print()
。