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
Susan SarandonOriginal
2024-12-19 01:50:09665Durchsuche

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?
};

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
};

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!

Stellungnahme:
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