当我尝试编译以下程序时,我得到一个有意义的 l 值错误。错误是:错误 C2106:'=':左操作数必须是左值
代码:
int main()
{
int a,b,c,d;
b+c=d;
return 0;
}
但是当我用自己的结构替换整数时,下面的代码工作得很好
struct MyStruct
{
int val;
MyStruct(){}
};
MyStruct operator+(MyStruct& s1, MyStruct& s2)
{
MyStruct temp;
return temp;
}
int main()
{
MyStruct a,b,c,d;
b+c=d;
return 0;
}
第二个代码是怎么编译的?我知道我可以从 operator+ 返回 const。但是第二个例子中的 b+c 不是右值吗?那么它是如何编译的