C++ | Funciones virtuales | Pregunta 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::fun()
(C) C::fun()

Respuesta: (C)
Explicación: Lo importante a tener en cuenta aquí es que B::fun() es virtual incluso si no lo hemos hecho, usa la palabra clave virtual con él.

Cuando una clase tiene una función virtual, las funciones con la misma firma en todas las clases descendientes se vuelven automáticamente virtuales. No necesitamos usar la palabra clave virtual en la declaración de fun() en B y C. De todos modos, son virtuales.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *