Wenn Sie in C ++ etwas tun, was Sie unten sehen, ist die Reihenfolge der Konstruktion garantiert?
%Vor%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.
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).
Tags und Links c++ initialization