Я новичок в С++. Книга, которую я читаю, говорит мне, что если оператор плюс (+
) был перегружен для некоторого объекта класса, скажем, класса 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
?