Я новичок в C++. Книга, которую я прочитал, говорит мне, что если оператор плюс (+
) был перегружен для некоторого объекта класса, скажем, класса 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. Мой вопрос: почему оператор +
возвращает изменяемое значение lvalue для объектов string
, но не для int
?
В C++ объекты являются экземплярами любого типа, включая встроенные типы. И типы - это типы. Таким образом, «объекты» и «встроенные типы» не имеют смысла. – juanchopanza
@juanchopanza Было бы полезно указать правильную формулировку, пока вы на ней :) – Quentin
@Quentin Я думаю, что «разница между встроенными типами и определенными пользователем типами» будет точной. – juanchopanza