次のプログラムをコンパイルしようとすると、意味のある左辺値でエラーが発生します。エラー: エラー 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;
}
2 番目のコードがコンパイルされるのはなぜですか? operator+ から const を返すことができることはわかっています。しかし、2 番目の例の b+c は右辺値ではありませんか? では、なぜそれがコンパイルされるのですか