Maison > développement back-end > C++ > Comment garantir l'ordre d'initialisation dans les listes d'initialisation des membres C ?

Comment garantir l'ordre d'initialisation dans les listes d'initialisation des membres C ?

Susan Sarandon
Libérer: 2024-12-14 09:12:12
original
791 Les gens l'ont consulté

How to Guarantee Initialization Order in C   Member Initializer Lists?

Ordre d'initialisation dans les listes d'initialisation de membres

En C, les constructeurs initialisent souvent les variables membres à l'aide d'une liste d'initialisation de membres. Cependant, l'ordre dans lequel ces variables sont initialisées peut prêter à confusion.

Considérez le constructeur suivant :

class A {
public:
    OtherClass a_;
    AnotherClass b_;

    A(OtherClass o, string x, int y)
    : a_(o)
    , b_(a_, x, y) {}
};
Copier après la connexion

Problème :

À l'origine, on a supposé que les variables étaient initialisées dans l'ordre indiqué dans la liste d'initialisation : a_ d'abord, puis b_. Cependant, un problème est survenu lorsqu'il s'est avéré que les variables étaient initialisées dans l'ordre inverse.

Question :

Comment contrôler l'ordre d'initialisation pour garantir que a_ est initialisé avant b_ ?

Réponse :

L'ordre de l'initialisation dépend de l'ordre des déclarations de données membres dans la classe. Dans cet exemple, a_ est déclaré avant b_, il sera donc initialisé en premier.

Par conséquent, pour garantir l'ordre d'initialisation souhaité, il est crucial de déclarer les données membres dans le bon ordre dans la définition de la classe.

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