考慮下面的代碼左值:如果您嘗試運行它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我沒事。謝謝。 –