📜  C++ |虚函数|问题13

📅  最后修改于: 2021-05-25 19:24:02             🧑  作者: Mango

#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基础课程》。