在阅读有关左值和右值的 这个解释代码时,下面几行代码让我印象深刻:
int& foo();
foo() = 42; // OK, foo() is an lvalue
我在 g + + 中试过,但编译器说“对 foo ()的未定义引用”
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
它编译得很好,但是运行它会得到一个 内存区段错误
int& foo();
自己编译和运行都没有任何问题。
这个代码是什么意思?如何为函数调用赋值,为什么不赋右值?