¿Puede un destructor ser virtual?
¿Compilará el siguiente programa?
#include <iostream> using namespace std; class Base { public: virtual ~Base() {} }; int main() { return 0; }
(A) Sí
(B) No
Respuesta: (A)
Explicación: Un destructor puede ser virtual. Es posible que deseemos llamar al destructor apropiado cuando un puntero de clase base apunte a un objeto de clase derivado y eliminemos el objeto. Si el destructor no es virtual, solo se puede llamar al destructor de la clase base. Por ejemplo, considere el siguiente programa.
// Not good code as destructor is not virtual #include<iostream> using namespace std; class Base { public: Base() { cout << "Constructor: Base" << endl; } ~Base() { cout << "Destructor : Base" << endl; } }; class Derived: public Base { public: Derived() { cout << "Constructor: Derived" << endl; } ~Derived() { cout << "Destructor : Derived" << endl; } }; int main() { Base *Var = new Derived(); delete Var; return 0; } Output on GCC: Constructor: Base Constructor: Derived Destructor : Base
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