Maison > développement back-end > C++ > Liste d'initialisation des membres et affectation de constructeur : quand devez-vous utiliser laquelle ?

Liste d'initialisation des membres et affectation de constructeur : quand devez-vous utiliser laquelle ?

Barbara Streisand
Libérer: 2024-12-14 14:24:15
original
384 Les gens l'ont consulté

Member Initializer List vs. Constructor Assignment: When Should You Use Which?

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 :

  • Membres constants
  • Références (pas de pointeurs)
  • Membres de la classe de base (paramètres de la classe de base constructeur)

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)
{
}
Copier après la connexion
MyClass::MyClass()
{
  _capacity = 15;
  _data = NULL;
  _len = 0;
}
Copier après la connexion

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 initialiser les membres constants
  • Pour initialiser références
  • Pour transmettre des arguments aux constructeurs de classe de base

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!

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