Die Reihenfolge spielt für den Compiler keine Rolle (die Initialisierungsreihenfolge ist immer zuerst Basisklassen und immer Basisklassen in der Ableitungsreihenfolge und Member in der Deklarationsreihenfolge), aber für den Leser spielt sie eine Rolle: Es ist sehr verwirrend, wenn die Reihenfolge, in der Sie die Initialisierer angeben, nicht mit der Reihenfolge übereinstimmt, in der sie ausgeführt werden. Während es in den meisten Fällen keine Rolle spielt, können in einigen Fällen subtile Fehler auftreten, z.B.
struct Derived: Base
{
int member;
Derived();
}
Derived::Derived():
member(3),
Base(member) // Dies wird *vor* der Initialisierung von member ausgeführt!
{
}
Dieser Fehler würde deutlicher werden, wenn die Initialisierer in der richtigen Reihenfolge angegeben würden:
Derived::Derived():
Base(member), // Jetzt sehen wir sofort, dass member nicht initialisiert ist
member(3),
{
}