По духу это похоже на вопрос , который был задан и отвечен на c
. Комментарии там подразумевают, что точный ответ будет отличаться для c++
, поэтому вот аналогичный вопрос для кода, написанного в c++
.
Хорошо ли определена следующая программа?
int f(int& b)
{
b = 42;
return b;
}
int a { f(a) };
Мне кажется, все в порядке, но, с другой стороны, как a
создается из значения, которое вычисляется функцией, которая сама изменяет a
? У меня чувство курицы и яйца по этому поводу, поэтому объяснение было бы неплохо. Что бы это ни стоило, кажется работающим.
Кажется, это тот же самый вопрос, так что здесь идет; будет ли ответ отличаться для типов классов и основных типов. т. е. хорошо ли сформировано следующее?
struct S { int i; };
S f(S& b)
{
b.i = 42;
return b;
}
S a { f(a) };
Опять же, для чего стоит, этот , кажется, также работает.