C++ | Destructores | Pregunta 4

#include <iostream>
using namespace std; 
class A
{
    int id;
    static int count;
public:
    A() {
        count++;
        id = count;
        cout << "constructor for id " << id << endl;
    }
    ~A() {
        cout << "destructor for id " << id << endl;
    }
};
   
int A::count = 0;
   
int main() {
    A a[3];
    return 0;
}

(A)

constructor for id 1
constructor for id 2
constructor for id 3
destructor for id 3
destructor for id 2
destructor for id 1

(B)

constructor for id 1
constructor for id 2
constructor for id 3
destructor for id 1
destructor for id 2
destructor for id 3

(C)

Compiler Dependent.

(D)

constructor for id 1
destructor for id 1

Respuesta: (A)
Explicación: En el programa anterior, id es una variable estática y se incrementa con cada creación de objeto. El objeto a[0] se crea primero, pero el objeto a[2] se destruye primero. Los objetos siempre se destruyen en orden inverso al de su creación. El motivo del orden inverso es que un objeto creado más tarde puede usar el objeto creado anteriormente. Por ejemplo, considere el siguiente fragmento de código.

A a;
B b(a);

En el código anterior, el objeto ‘b’ (que se crea después de ‘a’), puede usar algunos miembros de ‘a’ internamente. Entonces, la destrucción de ‘a’ antes de ‘b’ puede crear problemas. Por lo tanto, el objeto ‘b’ debe ser destruido antes que ‘a’.
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 *