
Сообщение от
Unifan
Хочется узнать, почему возвращается именно ссылка на объект, а не сам объект
Я отвечу кодом:
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <iostream>
#include <string>
using namespace std;
struct mystream
{
string AllData;
};
mystream operator << (mystream Stream, string Data)
{
Stream.AllData += Data;
return Stream;
}
int main()
{
mystream Stream;
Stream << "Hello" << ", " << "World!";
cout << Stream.AllData << endl;
return 0;
} |
|
А теперь перепишем оператор вывода "по учебнику":
C++ |
1
2
3
4
5
| mystream & operator << (mystream & Stream, string Data)
{
Stream.AllData += Data;
return Stream;
} |
|
Задумайтесь [think about

], какое поведение более ожидаемо для
объектов cout/ofstream и т.п.