Maison >développement back-end >C++ >Quel est l'ordre de construction et de destruction dans l'héritage C ?
Ordre de construction et de destruction dans l'héritage
Considérez la hiérarchie de classes suivante :
struct A { A() { std::cout << "A() C-tor" << std::endl; } ~A() { std::cout << "~A() D-tor" << std::endl; } }; struct B : public A { B() { std::cout << "B() C-tor" << std::endl; } ~B() { std::cout << "~B() D-tor" << std::endl; } A a; };
Lorsqu'une instance de B est créé (comme dans int main() { B b; }), l'ordre de construction et de destruction suit des règles :
Ordre de construction :
Cela se traduit par l'appel suivant ordre :
Ordre de destruction :
Cela entraîne la destruction suivante ordre :
Par conséquent, l'ordre de construction commence par la classe de base, passe aux champs membres et se termine par la classe dérivée. L'ordre de destruction est l'inverse de l'ordre de construction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!