面试题答案
一键面试- 输出结果:
Derived::func(int)
Base::func(double)
- 原因解释:
- 对于
ptr->func(5);
:- 这里
ptr
是一个指向Derived
对象的Base
指针。func(int)
函数在Base
类中被声明为virtual
,并且在Derived
类中被重写(override
)。 - 根据C++的多态性,通过基类指针调用虚函数时,实际调用的是对象实际类型(这里是
Derived
)中重写的函数版本。所以输出Derived::func(int)
。
- 这里
- 对于
ptr->func(5.5);
:func(double)
函数在Base
类中不是虚函数,在Derived
类中也没有使用override
关键字(因为它不是虚函数重写)。- 当通过
Base
指针调用非虚函数时,调用的是指针类型(Base
)的函数版本。所以输出Base::func(double)
。
- 对于