Reihenfolge Konstruktorliste?
-
Hallo,
ich habe gerade festgestellt das es eine nunterschied macht wie die privaten member in einer klasse aufgelistet sind wenn ich eine fest vorgegeben konstruktor-initialisierungsliste habe.
PSEUDOCODE
Das geht nicht:class A { public: A(int member1_, double member2_) : member1(member1_), member2(member2_) {} private: double member2; int memeber1; };
das schon:
class A { public: A(int member1_, double member2_) : member1(member1_), member2(member2_) {} private: int memeber1; double member2; };
Warum ist das so? Was ist der Grund?
-
Weil die Datenmember immer in der Reihenfolge initialisiert werden, wie sie in der Klassendefinition deklariert wurden. Und da ist es egal, in welcher Reiehnfolge du deine Elementinitialisierer auflistest.
-
Hmm...was ist ein datenmember und was ein Elementinitialisierer? so richtig versteh ich die antwort nocht nicht....
-
[hab n bissel editiert und einen Tippfehler im Code entfernt]
anfaenger++ schrieb:
PSEUDOCODE
Das geht nicht:class A { public: A(int m1, double m2) : member1(m1), member2(m2) {} private: double member2; int member1; };
Was geht daran denn nicht?
-
Es gibt Compiler die das anmeckern, so zum Beispiel der gcc. Allerdings nur als warning.