Ordre d'initialisation des données membres non statiques
En C, lors de l'initialisation d'un objet, l'ordre d'initialisation des données membres non statiques est un sujet de préoccupation. Pour comprendre cet ordre, il est important de se référer à la section pertinente de la norme C.
Selon 12.6.2 de la norme C, les données membres non statiques sont initialisées dans l'ordre dans lequel elles apparaissent dans la définition de la classe. . Ceci quel que soit l'ordre dans lequel les listes d'initialisation des membres apparaissent dans le corps de la classe.
Considérons l'exemple suivant :
class A {}; class B {}; class X { A a; B b; };
Dans la classe X, l'ordre d'initialisation est A suivi de B. . En effet, A est déclaré avant B dans la définition de la classe. Peu importe si l'ordre des listes d'initialisation des membres au sein du constructeur était différent.
Cet ordre d'initialisation garantit que les classes de base et les sous-objets membres sont détruits dans l'ordre inverse de l'initialisation. Par conséquent, B serait détruit avant A dans l’exemple ci-dessus.
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!