Maison > développement back-end > C++ > Pourquoi l'ordre d'initialisation des membres dans les constructeurs C diffère-t-il de l'ordre de la liste d'initialisation ?

Pourquoi l'ordre d'initialisation des membres dans les constructeurs C diffère-t-il de l'ordre de la liste d'initialisation ?

Patricia Arquette
Libérer: 2024-12-19 04:12:50
original
532 Les gens l'ont consulté

Why Does Member Initialization Order in C   Constructors Differ from the Initializer List Order?

Ordre d'évaluation de la liste d'initialisation des membres

Lorsque vous travaillez avec des constructeurs qui initialisent des membres de classe, il est crucial de comprendre l'ordre dans lequel ces initialisations se produisent. Explorons un scénario dans lequel l'ordre d'initialisation attendu n'a pas été suivi, entraînant un comportement inattendu.

Dans le code fourni, une classe A est définie avec les variables membres a_ et b_. Le constructeur prend des arguments pour initialiser les deux membres. Le programmeur a supposé que les membres seraient initialisés dans l’ordre indiqué : d’abord a_ puis b_. Cependant, dans un cas précis, il a été observé que b_ était initialisé avant a_, provoquant un abandon lorsque a_ était référencé avant son initialisation.

Pour garantir le bon ordre d'initialisation, il est essentiel de savoir que l'ordre est déterminé par les déclarations de données membres dans la définition de classe. Dans l'exemple ci-dessus, a_ est déclaré en premier dans la classe, suivi de b_. Par conséquent, a_ sera toujours initialisé avant b_, quel que soit l'ordre dans la liste d'initialisation des membres, résolvant ainsi le problème rencontré par le programmeur.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal