Maison >développement back-end >C++ >Liste d'initialisation des membres et affectation dans les constructeurs C : quand dois-je utiliser lequel ?
Liste d'initialisation vs affectation dans le constructeur
En C , il existe deux approches courantes pour initialiser les membres d'une classe dans un constructeur : utiliser un membre liste d'initialisation ou attribution de valeurs directement dans le constructeur. Bien que syntaxiquement différent, il peut y avoir des différences subtiles dans les scénarios de génération de code et d'utilisation.
Liste d'initialisations de membres
Une liste d'initialisations de membres est une liste d'initialisations de membres séparées par des virgules. qui est placé dans le constructeur après les deux points (:). Dans l'exemple que vous avez fourni :
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { }
Cela initialise les trois variables membres _capacity, _data et _len avec les valeurs spécifiées. Cette syntaxe est préférée pour initialiser des membres constants, des références et des constructeurs de classe de base.
Affectation dans le constructeur
Dans l'approche alternative, vous pouvez attribuer des valeurs aux variables membres dans le corps du constructeur :
MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 }
Cette syntaxe est plus courante pour initialiser un membre non constant variables.
Génération et optimisation de code
Le compilateur génère généralement du code optimisé pour les deux approches. Dans la plupart des cas, le code assembleur résultant est identique. Cependant, dans de rares cas, l'utilisation de la liste d'initialisation des membres peut entraîner un code plus efficace lors de l'initialisation de membres constants ou lors de la définition de valeurs par défaut.
Scénarios d'utilisation
Comme mentionné ci-dessus , la liste d'initialisation des membres est requise pour initialiser les membres constants, les références et les constructeurs de classe de base. Pour les autres variables membres, l’une ou l’autre approche est acceptable. Cependant, il est considéré comme une bonne pratique d'utiliser la liste d'initialisation des membres pour initialiser les variables membres qui ont des exigences de construction ou d'initialisation non triviales.
Dans le cas spécifique de votre exemple, utiliser la liste d'initialisation des membres ou attribuer des valeurs dans le constructeur ne fait aucune différence pratique.
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!