Mitgliedsfelder, Reihenfolge der Konstruktion

7

Wenn Sie in C ++ etwas tun, was Sie unten sehen, ist die Reihenfolge der Konstruktion garantiert?

%Vor%     
Paul Manta 10.06.2011, 15:54
quelle

2 Antworten

26

Ja, die Reihenfolge der Konstruktion ist immer garantiert. Es ist jedoch nicht garantiert, dass die Reihenfolge der Objekte in der Initialisierungsliste identisch ist.

Elementvariablen werden in der Reihenfolge erstellt, in der sie im Hauptteil der Klasse deklariert sind. Zum Beispiel:

%Vor%

a wird zuerst erstellt, dann b . Die Reihenfolge, in der Elementvariablen in der Initialisierungsliste angezeigt werden, ist irrelevant.

    
James McNellis 10.06.2011, 15:56
quelle
9

Die Reihenfolge der Konstruktion ist die Reihenfolge der Deklaration in der Klassendefinition.

Wenn sich die Reihenfolge in ctor-initializer unterscheidet, hat dies keinen Einfluss auf die Reihenfolge der Konstruktion. Ihr Compiler könnte dies warnen.

Siehe 12.6.2 / 5 (Wortlaut von 2003, genannt [class.base.init] ):

  

nichtstatische Datenmitglieder sollen sein   initialisiert in der Reihenfolge, in der sie waren   in der Klassendefinition deklariert   (wieder unabhängig von der Reihenfolge der   mem-initialiser).

    
quelle

Tags und Links