Initialisierungsliste (Reihenfolge)
-
Hallo zusammen,
kann ich mich darauf verlassen, dass die Initialisierungsliste in
der Reihenfolge ausgeführt wird, wie angegeben oder ist die Reihenfolge
undefiniert?Ich dachte an sowas:
MyClass() : obj("Text"), obj2(obj){ }Kann obj dann theoretisch undefiniert sein, wenn er als Parameter übergeben wird?
Gruß,
*Cpp-Anfänger*
-
Die Reihenfolge ist so wie die Deklarationen in der Klasse stehen. Die Reihenfolge in der Initialisierungsliste ist irrelevant.
-
Du kannst Dich darauf verlassen, dass sie NICHT in der angegebenen Reihenfolge ausgeführt werden. ...

OK, ist übertrieben: Sie werden in der Reihenfolge, in der die Elemente in der Klassendeklaration aufgeführt sind !
Aber darauf kannst Du Dich verlassen. Mein Compiler warnt mich, wenn diese beiden Reihenfolgen auseinanderlaufen.
Insgesamt ist es aber eine gefährliche Sache, sich da auf eine besteimmte Reihenfolge "einzuschießen" und da allzu komplizierter Abhängigkeiten einzubauen....Gruß,
Simon2.