<分区>
考虑以下代码:
#include <iostream>
using namespace std;
class X
{
int i;
public:
X(int ii = 0);
};
X::X(int ii) { i = ii; }
int a;
X f1() { return X(); }
int f2() { return a; }
int main() {
f1() = X(1);
f2() = 3;
}
如果你尝试运行它,你会得到
error: lvalue required as left operand of assignment
因此在第 17 行
f1()
被认为是左值,而
f2()
不是。解释将对事物如何运作有很大帮助。