C++ | Funciones virtuales | Pregunta 12

Prediga la salida del siguiente programa C++. Suponga que no hay alineación y que el compilador realiza una implementación típica de funciones virtuales.

#include <iostream>
using namespace std;
  
class A
{
public:
    virtual void fun();
};
  
class B
{
public:
   void fun();
};
  
int main()
{
    int a = sizeof(A), b = sizeof(B);
    if (a == b) cout << "a == b";
    else if (a > b) cout << "a > b";
    else cout << "a < b";
    return 0;
}

(A) a > b
(B) a == b
(C) a < b
(D) Error del compilador

Respuesta: (A)
Explicación: la clase A tiene un VPTR que no está en la clase B.

En una implementación típica de funciones virtuales, el compilador coloca un VPTR con cada objeto. El compilador agrega secretamente algo de código en cada constructor a esto.

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 *