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) {} };
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!