Да, это безопасно, но в этом случае вы должны быть осторожны. Вы используете var
, а не _var
, поэтому вы должны быть уверены, что var
создан до i
. Это тот случай, так как элементы построены в порядке их объявления (в данном случае var
, i
), что может отличаться от порядка их появления в списке инициализатора.
Так что в этом случае это работает. Это также будет работать в этом случае:
C(int _var): i(var*var), var(_var)
но не в этом:
class C{
public:
C(int _var): var(_var), i(var*var)
{}
private:
int i;
int var;
};
Но, конечно, чтобы всегда быть в безопасности, вы можете просто использовать _var
:
C(int _var): var(_var), i(_var*_var)