La creación de objetos se divide aproximadamente en tres etapas
- Ejecuta el constructor de la clase base.
- Ejecuta el constructor del miembro de tipo de clase.
- Ejecuta el constructor de tu propia clase.
- Ejecute el constructor de la clase base de la clase.
-
- Todas las clases base ejecutarán su propio constructor, independientemente de si la clase base está en la lista de inicialización o no.
-
- El constructor se puede especificar en la lista de voz inicial, si no se especifica. Simplemente llame al constructor predeterminado.
-
- Orden de ejecución, presione, declare el orden de escritura de la clase base al heredar. No tiene nada que ver con el orden en la lista de inicialización.
- Inicializar los miembros de tipo de clase de la clase
-
- Todos los miembros de tipo de clase llamarán al constructor para que se inicialicen, independientemente de si el miembro está en la lista de inicialización.
-
- El constructor se puede especificar en la lista de voz inicial, si no se especifica. Simplemente llame al constructor predeterminado.
-
- Orden de ejecución, presione, el orden de escritura de los miembros al declarar la clase. No tiene nada que ver con el orden en la lista de inicialización.
- Ejecuta el propio constructor de la clase.
manifestación:
#include<bits/stdc++.h>
using namespace std;
class Parent2 {
public:
Parent2() {
cout << "Parent2 constructor is called\n";
}
};
class Parent1 {
public:
Parent1() {
cout << "Parent1 constructor is called\n";
}
};
class A {
public:
A() {
cout << "A constructor is called\n"; }
};
class B {
public:
B() {
cout << "B constructor is called\n"; }
};
class Son : Parent1 , Parent2
{
A a;
B b;
public:
Son(): b(), Parent1()
{
cout << "Son constructor is callede\n";
}
};
int main()
{
Son s;
return 0;
}
Resultados del:
Parent1 constructor is called
Parent2 constructor is called
A constructor is called
B constructor is called
Son constructor is callede