Classes and class hierarchies
C.47
Определяйте и инициализируйте члены данных в порядке их объявления
Причина
Чтобы минимизировать путаницу и ошибки. Это порядок, в котором происходит инициализация (независимо от порядка инициализаторов членов).
Плохой пример
class Foo {
int m1;
int m2;
public:
Foo(int x) :m2{x}, m1{++x} { } // BAD: misleading initializer order
// ...
};
Foo x(1); // surprise: x.m1 == x.m2 == 2
Применение
(Simple) Список инициализаторов членов должен упоминать членов в том же порядке, в котором они объявлены.
См. также: Обсуждение