如果函数返回一个int,可以为它分配一个int吗?

sky*_*oor 8 c++ function rvalue

如果函数返回一个int,它是否可以由int值赋值?我认为为函数赋值是没有多大意义的.

int f() {}

f() = 1;
Run Code Online (Sandbox Code Playgroud)

我注意到,如果函数返回对int的引用,那就没问题.它仅限于int吗?其他类型怎么样?或任何其他规则?

int& f() {}

f() = 1;
Run Code Online (Sandbox Code Playgroud)

Ale*_*ler 22

第一个函数返回一个整数乘值,它是一个r值.一般情况下,您无法分配r值.第二个f()返回一个整数的引用,这是一个l值 - 所以你可以赋值给它.

int a = 4, b = 5;

int& f() {return a;}

...
f() = 6;
// a is 6 now
Run Code Online (Sandbox Code Playgroud)

注意:您没有为函数赋值,只需赋值给它的返回值.请注意以下事项:

int& f() { int a = 4; return a; }
Run Code Online (Sandbox Code Playgroud)

您将返回对临时的引用,该函数在函数返回后不再有效.访问引用会调用未定义的行为.