Maison > développement back-end > C++ > le corps du texte

Quand la syntaxe d'initialisation entre accolades doit-elle être utilisée en C 11 ?

Susan Sarandon
Libérer: 2024-10-24 05:00:56
original
595 Les gens l'ont consulté

When Should Brace-Enclosed Initialization Syntax Be Used in C  11?

Quand utiliser l'initialisation entre accolades en C 11

C 11 a introduit la syntaxe d'initialisation entre accolades, offrant une myriade d'options pour l'initialisation variables. Cependant, le choix de la syntaxe peut avoir un impact significatif sur la sémantique du code, notamment dans les contextes de modèles. Pour résoudre ce problème, il est essentiel de respecter des lignes directrices cohérentes afin de garantir la clarté et l'exactitude.

Principe directeur :

  1. Valeur exacte Initialisation :

    • Utilisez l'initialisation par copie (=) pour attribuer une valeur explicite à un objet, évitant ainsi les ambiguïtés potentielles du constructeur.
    • Si l'initialisation par copie n'est pas disponible, envisagez une accolade initialisation s'il conserve la sémantique correcte. Sinon, utilisez l'initialisation des parenthèses.
  2. Initialisation des valeurs de stockage :

    • Utilisez l'initialisation des accolades pour spécifier une liste de valeurs à être stocké dans l'objet, comme des éléments dans des vecteurs et des nombres complexes.
  3. Initialisation de la valeur descriptive :

    • Utiliser initialisation des parenthèses pour les valeurs qui décrivent l'état prévu d'un objet, c'est-à-dire les paramètres qui influencent son comportement plutôt que d'être directement stockés. Cela inclut les arguments pour les vecteurs (taille) et les noms de fichiers pour ifstreams.

Exemple de démonstration :

  • Exemple 1- 2 : L'initialisation par copie garantit une initialisation précise.
  • Exemple 3 : L'initialisation par accolade est appropriée pour stocker un nombre spécifique de caractères « x » dans une chaîne.
  • Exemple 4 : L'initialisation par accolade est utilisée pour initialiser un objet fonction (std::function).
  • Exemple 5 : l'initialisation des accolades et des parenthèses fonctionne pour std::unique_ptr.
  • Exemple 6-7 : l'initialisation des accolades fournit une syntaxe plus concise pour initialisation de std::locale et std::default_random_engine.
  • Exemple 8 : l'initialisation des accolades est préférable pour initialiser les objets de durée car elle est plus idiomatique et efficace.

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
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