#include
using namespace std;
class A
{
public:
virtual void fun() { cout << "A::fun() "; }
};
class B: public A
{
public:
void fun() { cout << "B::fun() "; }
};
class C: public B
{
public:
void fun() { cout << "C::fun() "; }
};
int main()
{
B *bp = new C;
bp->fun();
return 0;
}
(A) A :: fun()
(B) B :: fun()
(C) C :: fun()答案: (C)
说明:这里要注意的重要一点是B :: fun()是虚拟的,即使我们没有使用virtual关键字也是如此。
当一个类具有虚函数,所有后代类中具有相同签名的函数将自动变为虚函数。我们不需要在B和C中的fun()声明中使用virtual关键字。无论如何,它们都是虚拟的。
这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。