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 des membres et affectation dans les constructeurs C : quand dois-je utiliser lequel ?

DDD
Libérer: 2025-01-04 19:47:42
original
528 Les gens l'ont consulté

Member Initializer List vs. Assignment in C   Constructors: When Should I Use Which?

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)
{
}
Copier après la connexion

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
}
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal