考虑以下代码:
#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;
}
如果你试图运行它,你会得到:
错误: 赋值的左边必须是一个可修改的 lvalue
在第17行,因此
f1()
被认为是一个lvalue,而
f2()
则不是。如何工作的解释将会非常有帮助。
int
赋值,如果不明白,我会再添加一个重复说明。 - Baum mit Augen