Порядок не имеет значения для компилятора (порядок инициализации всегда сначала базовые классы, и всегда базовые классы в порядке вывода, и члены в порядке объявления), но он имеет значение для читателя: очень сбивает с толку, если порядок, в котором вы даете инициализаторы, не соответствует порядку, в котором они выполняются. Хотя в большинстве случаев это не имеет значения, в некоторых случаях вы можете создавать незначительные ошибки, например,
struct Derived: Base
{
int member;
Derived();
}
Derived::Derived():
member(3),
Base(member) // This is executed *before* member is initialized!
{
}
Эта ошибка выглядела бы более отчетливо, если бы инициализаторы были заданы в правильном порядке:
Derived::Derived():
Base(member), // Now we see immediately that member is uninitialized
member(3),
{
}