Maison > développement back-end > C++ > Liste d'initialisation et corps du constructeur : quelle syntaxe de constructeur C devriez-vous utiliser ?

Liste d'initialisation et corps du constructeur : quelle syntaxe de constructeur C devriez-vous utiliser ?

Linda Hamilton
Libérer: 2024-12-03 14:23:17
original
826 Les gens l'ont consulté

Initializer List vs. Constructor Body: Which C   Constructor Syntax Should You Use?

Syntaxe d'initialisation dans les constructeurs : liste d'initialisation et corps du constructeur

En C, vous disposez de deux options pour initialiser les variables membres de la classe dans un constructeur :

  • Initialiseur Liste :

    public: Thing(int _foo, int _bar): member1(_foo), member2(_bar) {}
    Copier après la connexion
  • Corps du constructeur :

    public: Thing(int _foo, int _bar) {
      member1 = _foo;
      member2 = _bar;
    }
    Copier après la connexion

Comparaison

Bien que les deux syntaxes semblent similaires, elles peuvent présenter des différences significatives pour les non-POD Types de membres (Plain Old Data).

Dans la syntaxe de la liste d'initialisation, les variables membres sont initialisées avant l'exécution du corps du constructeur. Cela signifie que les membres non POD avec des constructeurs autres que ceux par défaut sont garantis d'être correctement initialisés.

Dans la syntaxe du corps du constructeur, les variables membres sont initialisées après le corps du constructeur. Cela peut entraîner une double initialisation et des erreurs de compilation si les membres non-POD n'ont pas de constructeurs par défaut.

Gestion des paramètres par défaut

Les paramètres par défaut ne sont pas gérés différemment entre les deux syntaxes. Vous pouvez utiliser les paramètres par défaut à la fois dans la liste d'initialisation et dans le corps du constructeur.

Conclusion

Pour les types de membres non POD, il est recommandé d'utiliser la syntaxe de la liste d'initialisation car il garantit une initialisation correcte et évite les erreurs potentielles.

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