damnvoid (./6) :
il me semble qu'il y a un constructeur par defaut qui appelle juste le constructeur par defaut de tous les membres, non? (sauf si tu definis explicitement un constructeur qui prend des arguments)
Oui, uniquement si aucun des constructeurs en question ne prend d'argument. Flanker demandait ce qu'il se passait si l'un des attributs n'avait qu'un constructeur avec argument, et dans ce cas il n'y a pas d'autre solution que l'appeler explicitement.
[edit] illustration :
struct A
{
A (int) {}
};
struct B
{
A a;
};
int main ()
{
B b;
}
$ g++ test.cc
test.cc: In constructor 'B::B()':
test.cc:8:1: error: no matching function for call to 'A::A()'
test.cc:4:2: note: candidates are: A::A(int)
test.cc:3:1: note: A::A(const A&)
test.cc: In function 'int main()':
test.cc:14:4: note: synthesized method 'B::B()' first required here