Maison > développement back-end > C++ > Les constructeurs C peuvent-ils initialiser des tableaux directement dans les listes d'initialisation de membres ?

Les constructeurs C peuvent-ils initialiser des tableaux directement dans les listes d'initialisation de membres ?

Susan Sarandon
Libérer: 2024-11-14 12:59:02
original
513 Les gens l'ont consulté

Can C   Constructors Initialize Arrays Directly in Member Initializer Lists?

Initialisation des membres d'un tableau dans les listes d'initialisation des constructeurs

L'incapacité d'initialiser des tableaux dans les constructeurs à l'aide de listes d'initialisation de membres soulève des questions concernant les règles sous-jacentes et les possibles solutions.

C 03 Standard et Granulat Initialisation

La norme C 03 interdit l'utilisation de l'initialisation directe pour les types d'agrégats, y compris les tableaux, dans les listes d'initialisation de membres. L'initialisation directe fait référence à l'utilisation du constructeur directement avec des parenthèses, comme le montrent les extraits de code fournis.

Boost::array comme solution

Une approche alternative consiste à utiliser une structure qui encapsule le tableau. En définissant un constructeur dans la structure, vous pouvez initialiser le tableau lors de la création de l'objet. Ceci est similaire à l'approche adoptée par la bibliothèque Boost::array.

Initialisation de liste C 11

C 11 a introduit l'initialisation de liste, qui permet l'initialisation directe des agrégats. , y compris les tableaux, dans les listes d'initialisation de membres. Cependant, la syntaxe mentionnée dans la question est incorrecte. Pour utiliser l'initialisation de liste, vous devez mettre les éléments du tableau entre accolades :

class C
{
public:
    C() : arr{1, 2, 3} {}
};
Copier après la connexion

Cette syntaxe initialise correctement le tableau arr dans le constructeur.

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