Heim > Backend-Entwicklung > C++ > Warum sind In-Class-Initialisierer in C 11 auf „=' und „{}' beschränkt?

Warum sind In-Class-Initialisierer in C 11 auf „=' und „{}' beschränkt?

Susan Sarandon
Freigeben: 2024-12-19 01:50:09
Original
655 Leute haben es durchsucht

Why are In-Class Initializers in C  11 Restricted to `=` and `{}`?

Syntaxeinschränkung für klasseninterne Initialisierer

In C 11 können klasseninterne Initialisierer nur das Gleichheitszeichen (=) oder Curly verwenden Klammern {}, um Mitgliedern Werte zuzuweisen. Warum ist das so?

Mehrdeutigkeitsminderung

Die Syntax der geschweiften Klammern erzwingt eine eindeutige Interpretation des Codes. Betrachten Sie dieses Beispiel:

class Example {
    struct Inner;
    int member;

    int conflicting(Inner); // Function declaration or member initialization?
};
Nach dem Login kopieren

Ohne die Einschränkung durch geschweifte Klammern könnte der Codeausschnitt mehrdeutig sein. Die erste Zeile könnte entweder als Funktionsdeklaration oder als Member-Initialisierung mithilfe von Klammern interpretiert werden.

class Example {
    struct Inner;
    int member;

    int conflicting{Inner}; // Clearly a member initialization
};
Nach dem Login kopieren

Die geschweiften Klammern verdeutlichen, dass es sich bei „conflicting“ um ein Member handelt, das mit dem Wert „Inner“ initialisiert wurde.

Zusätzliche Klarheit

Die Verwendung von geschweiften Klammern sorgt auch für zusätzliche Klarheit, indem Mitgliedsdeklarationen und Initialisierungen getrennt werden. Dies kann die Lesbarkeit verbessern und das Risiko von Missverständnissen verringern.

Das obige ist der detaillierte Inhalt vonWarum sind In-Class-Initialisierer in C 11 auf „=' und „{}' beschränkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage