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

Est-ce que std::array est initialisé par défaut en C 11 ?

Linda Hamilton
Libérer: 2024-10-30 11:47:02
original
923 Les gens l'ont consulté

Is std::array Default-Initialized in C  11?

Initialisation par défaut de std::array

C 11 a introduit la structure de données std::array, qui ressemble aux tableaux de style C mais fournit des fonctionnalités supplémentaires telles que le modèle- spécification de type basée sur la détermination de la taille au moment de la compilation. Cependant, une question courante se pose : la déclaration d'un std::array sans initialisation explicite entraîne-t-elle une initialisation par défaut pour chaque élément ?

Selon la spécification du langage C (§8.5/11), tout objet sans initialiseur explicite subit une initialisation par défaut. Cela inclut les objets std::array. L'initialisation par défaut initialise les objets de types non-classe, mais pour les objets de types classe (ce qu'est std::array), elle invoque le constructeur par défaut.

Cependant, la documentation cppreference mentionne que le constructeur par défaut "default- construit ou construit par copie chaque élément du tableau. Cela implique que std::array ne peut pas effectuer d'initialisation par défaut pour chaque élément.

Réponse :

Oui, par défaut, déclarer un std::array sans initialisation explicite initialisera par défaut tous les éléments conformément à la spécification C 11. Ce comportement s'applique aux tableaux de taille nulle et non nulle.

Initialisation de la valeur par rapport à l'initialisation par défaut :

Notez que l'initialisation de la valeur (8.5/7) diffère de l’initialisation par défaut. L'initialisation de la valeur attribue aux éléments la valeur par défaut de leurs types respectifs, qui est généralement zéro ou faux pour les types primitifs. Pour effectuer explicitement l'initialisation de la valeur, on peut utiliser des accolades avec un initialiseur vide :

<code class="cpp">std::array<int, 13> cxx_style_array{}; // Value-initialize all elements to 0</code>
Copier après la connexion

Cela définit explicitement tous les éléments à la valeur par défaut de int, qui est 0.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!