Maison > développement back-end > C++ > Pourquoi les initialiseurs C en classe doivent-ils utiliser `=` ou `{}` ?

Pourquoi les initialiseurs C en classe doivent-ils utiliser `=` ou `{}` ?

Mary-Kate Olsen
Libérer: 2024-12-19 02:36:43
original
691 Les gens l'ont consulté

Why Must C   In-Class Initializers Use `=` or `{}`?

Pourquoi les initialiseurs en classe nécessitent des valeurs égales ou des accolades

C 11 introduit des initialiseurs en classe, qui permettent d'initialiser les variables membres directement dans la définition de la classe. Cependant, ces initialiseurs doivent respecter des règles de syntaxe spécifiques.

Question :

Pourquoi est-il obligatoire que les initialiseurs en classe utilisent soit le signe égal (=) ou curl accolades ({}) ?

Réponse :

Cette exigence sert à éliminer les ambiguïtés syntaxiques potentielles.

Considérons l'exemple suivant :

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing(Overloaded); // <-- Ambiguous line
};
Copier après la connexion

La ligne problématique pourrait être interprétée de deux manières :

  1. En tant que déclaration de fonction avec un seul paramètre Overloaded qui renvoie un entier.
  2. En tant que déclaration et initialisation d'un membre entier nommé confus, où l'initiale value est le membre de données surchargé.

Cette ambiguïté survient en raison de l'utilisation de parenthèses, qui peuvent désigner à la fois les déclarations de méthode et l'initialisation d'objet.

Pour résoudre cette confusion, C 11 impose l'utilisation d'accolades pour les initialiseurs en classe. Cela indique explicitement que la confusion est une variable membre :

class BadTimes {
    struct Overloaded;
    int Overloaded; // Legal, but unusual.

    int confusing{Overloaded}; // <-- Clear initialization
};
Copier après la connexion

Ainsi, les initialiseurs en classe doivent utiliser des accolades égales ou bouclées pour éviter les malentendus de syntaxe et garantir la lisibilité du code.

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