Не то, чтобы это не неопределенно, но вы должны быть абсолютно уверены, что эти функции-члены используют только инициализированные значения. Также обратите внимание, что значения инициализируются в порядке , в котором они появляются в классе , а не в порядке, в котором они появляются в списке инициализации. Например:
struct Foo
{
int a, b;
int c;
Foo(): c(1), a(1), b(1) {}
};
В этом конструкторе переменные инициализируются в порядке a, b, затем c , порядок в списке ничего не значит. Поэтому, если вы хотите, чтобы значение a
было инициализировано с помощью некоторого вычисления для b
и c
, вам нужно переместить объявление a
в точку после значения b
и c
.