考虑下面的代码左值:如果您尝试运行它C++ - 需要作为分配的左操作数
#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;
}
,你
上线17error: lvalue required as left operand of assignment
,因此
f1()
被认为是左值,而
f2()
不是。一个解释对于事情如何工作会有很大的帮助很有帮助。
f1()不是左值,因为f1返回一个副本。移动信息请阅读http://en.cppreference.com/w/cpp/language/value_category 。 –
我希望这很清楚为什么你不能分配给临时的'int',如果不是,我会为此添加另一个重复。 –
@Baum mit Augen我没事。谢谢。 –