Orden de llamar a constructores / destructores en herencia
Una pequeña pregunta sobre la creación de objetos. Digamos que tengo estas dos clases:
struct A{
A(){cout << "A() C-tor" << endl;}
~A(){cout << "~A() D-tor" << endl;}
};
struct B : public A{
B(){cout << "B() C-tor" << endl;}
~B(){cout << "~B() D-tor" << endl;}
A a;
};
y en main creo una instancia deB
:
int main(){
B b;
}
Tenga en cuenta queB
deriva deA
y también tiene un campo de tipoA
.
Estoy tratando de descubrir las reglas. Sé que cuando se construye un objeto primero se llama a su constructor padre, y viceversa cuando se destruye.
¿Qué pasa con los campos A a;
en este caso)? CuandoB
se crea, ¿cuándo llamará aA
El constructor de @? No he definido una lista de inicialización, ¿hay algún tipo de lista predeterminada? ¿Y si no hay una lista predeterminada? Y la misma pregunta sobre la destrucción.