Code wie dieser kann gut funktionieren:
%Vor%Die linke Seite ist eine automatische Variable (Array).
Code wie dieser kann NICHT funktionieren:
%Vor%Die linke Seite ist ein Zeiger. Der Zeiger zeigt auf einen unbekannten Raum, so dass dies fehlschlägt.
Meine Frage ist, was ist der Typ der rechten Seite?
In C ++ 11 wird eine Initialisierungsliste std::initializer_list
. Aber was ist mit alter C ++ 03?
In C ++ 03 ist ein in Klammern eingeschlossener Initialisierer nur ein syntaktisches Gerät, mit dem Aggregate initialisiert werden können (z. B. Arrays oder bestimmte Arten von Klassen oder Strukturen). Es hat keinen "Typ" und kann nur für diese spezifischen Initialisierungsarten verwendet werden.
8.5.1 / 2 "Aggregate":
Wenn ein Aggregat initialisiert wird, kann der Initialisierer ein enthalten Initialisierer-Klausel, bestehend aus einer Klammer eingeschlossen, durch Komma getrennt Liste der Initialisierungsklauseln für die Mitglieder des Aggregats, geschrieben in steigender Subskription oder Member-Reihenfolge.
In C ++ 03 ist die rechte Seite eine Initialisierungsliste . Es hat keinen Typ, es dient lediglich dazu, Werte für Identifikatoren zu initialisieren.
Dies ist definiert in:
C ++ 03 8.5.1 Initialisierer [dcl.init]
%Vor%Ein Deklarator kann einen Anfangswert für den deklarierten Bezeichner angeben. Der Identifizierer bezeichnet ein Objekt oder eine Referenz, die initialisiert werden. Der im Rest von 8.5 beschriebene Initialisierungsprozess gilt auch für Initialisierungen, die von anderen syntaktischen Kontexten spezifiziert werden, wie zB die Initialisierung von Funktionsparametern mit Argumentausdrücken (5.2.2) oder die Initialisierung von Rückgabewerten (6.6.3).
>
Aus dem Entwurf von C ++ 11:
8.5 Initialisierer
16 Die Semantik der Initialisierer ist wie folgt. Der Zieltyp ist der Typ des Objekts oder der Referenz, die initialisiert werden, und die Quelle type ist der Typ des Initialisierungsausdrucks. Der Quelltyp ist nicht definiert, wenn der Initialisierer eine brained-init-Liste ist oder wenn es ein eingeklammerte Liste von Ausdrücken.