Брекет-или-равная инициализация через вызов функции

Хотя я думаю, что это не будет хорошей практикой, используемые мной компиляторы (как GNU, так и clang) допускают что-то вроде следующего

      int f() {return 11;}

class A {

int a = f();
public:
int tell_me() {return a;}
};

то есть где инициализация в скобках или равная выполняется путем вызова совершенно посторонней функции.

Это правильно и разрешено стандартом?
Как насчет побочных эффектов, в конечном итоге введенных в результате выполнения f()?

1

Решение

Это правильно и разрешено стандартом?

Да.

Как насчет побочных эффектов, которые в конечном итоге привносятся выполнением f ()?

Побочные эффекты случаются, когда функция выполняется, что происходит, когда A построен Точно так же, как если бы использовался список инициализации.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector