Ordre d'initialisation des attributs
Hello,
J'ai remarqué ya quelques temps que gcc se plaignait lorsque l'ordre d'initialisation des attributs dans le constructeur était différent de l'ordre de déclaration des attributs dans la classe / struct.
Cela veut-il dire qu'un attribut déclaré avant un autre sera initialisé avant un autre, et pourra dont être utilisé pour initialisé un autre attribut ?
Un petit exemple pour mieux expliquer
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| struct Foo {
const int val;
Foo(int v=42): val(v) { }
Foo(const Foo& foo): val(foo.val) { }
};
struct Bar {
const Foo a;
const Foo b;
Bar(int val):
a(val),
b(a) // ok car a déclaré avant dans Bar ?
// mais serait faux si b déclaré avant a dans la struct ?
{ }
}; |