在阅读关于左值和右值的这个解释时,这些代码行出来了: int& foo(); foo() = 42; // OK, foo() is an lvalue 我在g ++中试过,但编译器说“未定义的引用foo()”。 如果我添加 int foo() { return 2; } int main() { int& foo(); foo() = 42; } 它编译好,但运行它给出了分段错误 。 只是线路 int& foo(); 本身编译和运行没有任何问题。 这个代码是什么意思? 你怎么能给函数调用赋值,为什么不是右值呢?