Maison >développement back-end >C++ >Listes d'initialisation et affectations dans les constructeurs : quand devez-vous utiliser lesquelles ?
Analyse approfondie des techniques d'initialisation dans les constructeurs
Considérez le code suivant :
MyClass::MyClass() : _capacity(15), _data(NULL), _len(0) {}
Versus :
MyClass::MyClass() { _capacity = 15; _data = NULL; _len = 0; }
Il est important de noter que le choix entre utiliser une liste d'initialisation et attribuer les valeurs dans un constructeur dépendent des exigences spécifiques de l'initialisation des membres.
Liste d'initialisation des membres
Une liste d'initialisation est utilisée pour initialiser tous les membres de l'objet actuel lors de sa construction . Il est généralement recommandé pour plusieurs scénarios :
Dans l'exemple fourni, où _capacity, _data et _len ne sont pas des membres ou des références constants, les deux approches sont valides et donneront lieu à un code généré en interne équivalent. Cependant, si l'un de ces membres était constant ou une référence, la liste d'initialisation serait requise.
Assignations régulières vs. Liste d'initialisation
Alors que les affectations régulières au sein du constructeur sont généralement considérés comme acceptables pour les variables membres non constantes, ils présentent quelques inconvénients :
Conclusion
L'utilisation d'une liste d'initialisation est recommandée pour initialiser les membres constants, les références et transmettre des paramètres à constructeurs de classes de base. Pour les variables membres régulières, les instructions d'affectation régulières peuvent être plus appropriées, mais la liste d'initialisation fournit toujours une approche plus concise et précise.
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!