Я новичок в С++. Книга, которую я читаю, говорит мне, что если оператор плюс (+) был перегружен для некоторого объекта класса, скажем, класса string, чтобы сделать эту проблему более конкретной.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s1("abc");
string s2("def");
string s3("def");
cout<<(s1+s2=s3)<<endl;
int x=1;
int y=2
int z=3;
cout<<(x+y=z)<<endl;
return 0;
}
Как вы и ожидали, первый оператор cout верен, а второй - неправильным. Жалобы компилятора x+y не являются изменяемыми значениями. Мой вопрос: почему оператор + возвращает изменяемое значение lvalue для объектов string, но не для int?