Maison  >  Article  >  développement back-end  >  Est-ce que std::array est initialisé par défaut en C 11 ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 11:47:02915parcourir

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>

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!

Déclaration:
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