Warum die direkte Initialisierungssyntax für Klassendatenelemente verboten ist
In C können Klassendatenelemente nicht mit ( )Syntax in geschweifte Klammern. Betrachten Sie den folgenden Code:
class test { public: void fun() { int a(3); std::cout << a << '\n'; } private: int s(3); // Compiler error };
Mehrdeutigkeiten beim Parsen zu verhindern . Wenn eine in geschweifte Klammern eingeschlossene Initialisierung zulässig wäre, könnte der Compiler möglicherweise Deklarationen in folgenden Situationen falsch interpretieren:
struct S { int i(x); // data member with initializer // Other code static int x; };
Das obige ist der detaillierte Inhalt vonWarum können Klassendatenelemente nicht mit der in geschweifte Klammern eingeschlossenen Syntax initialisiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!