Рубрики

C ++ | Виртуальные функции | Вопрос 13

#include <iostream>

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 :: веселье ()
(C) C :: веселье ()

Ответ: (с)
Объяснение: Важно отметить, что B :: fun () является виртуальным, даже если мы не использовали с ним виртуальное ключевое слово.

Когда класс имеет виртуальную функцию, функции с одинаковой сигнатурой во всех классах-потомках автоматически становятся виртуальными. Нам не нужно использовать виртуальное ключевое слово в объявлении fun () в B и C. Они в любом случае являются виртуальными.
Тест на этот вопрос

Рекомендуемые посты:

C ++ | Виртуальные функции | Вопрос 13

0.00 (0%) 0 votes