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)
您将返回对临时的引用,该函数在函数返回后不再有效.访问引用会调用未定义的行为.