Maison >développement back-end >C++ >Liste d'initialisation des membres et affectation de constructeur : quand devez-vous utiliser laquelle ?
Liste d'initialisation et affectations de constructeur : différences internes et de code
Dans le code C donné, il y a une question concernant les différences entre l'utilisation d'un liste d'initialisation des membres et attribution de valeurs dans un constructeur.
Member Initializer Liste
La liste d'initialisation des membres, placée entre parenthèses après le nom du constructeur, est utilisée pour initialiser :
Affectations de constructeur
Les affectations de constructeur, quant à elles, sont utilisées pour initialiser des membres non constants et attribuer des valeurs à des variables non références.
Différences internes
En interne, les le code est légèrement différent entre les deux approches. Lors de l'utilisation d'une liste d'initialisation de membres, le compilateur place les valeurs des membres directement dans l'objet de classe lors de la construction. Cela évite des opérations d'affectation supplémentaires.
Différences de code
Comparaison des extraits de code donnés :
MyClass::MyClass() : _capacity(15), _data(NULL), _len(0) { }
MyClass::MyClass() { _capacity = 15; _data = NULL; _len = 0; }
Les deux extraits initialiseront les trois membres privés _capacity, _data et _len avec les valeurs spécifiées. Cependant, le premier extrait utilise une liste d'initialisation de membres, tandis que le deuxième extrait utilise des affectations de constructeur.
Quand utiliser les listes d'initialisation de membres
Les listes d'initialisation doivent être utilisées :
Pour l'initialisation standard (membres non constants, non-références), l'une ou l'autre approche peut être utilisée. En général, les listes d'initialisation de membres sont préférées pour des raisons d'efficacité.
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!