"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автора

(указатель на X) и инициализирован указателем на тот объект, для
которого эта функция вызвана. Определение ostream::put() можно
также записать в виде:

void ostream::put(char* p)
{
while (*p) this->buf.sputc(*p++);
}

Операция -> применяется для выбора члена объекта, заданного
указателем.

1.8 Перегрузка операций

Настоящий класс ostream определяет операцию <<, чтобы сделать
удобным вывод нескольких объектов одним оператором. Давайте
посмотрим, как это сделано.
Чтобы определить @, где @ - некоторая операция языка C++, для
каждого определяемого пользователем типа вы определяете функцию с
именем operator@, которая получает параметры соответствующего типа.
Например:

- стр 34 -

class ostream {
//...
ostream operator<<(char*);
};

ostream ostream::operator<<(char* p)
{
while (*p) buf.sputc(*p++);
return *this;
}

определяет операцию << как член класса ostream, поэтому s<
");

а если применить операцию взятия адреса, то вы получите адрес
объекта, на который ссылается ссылка:

&s1 == &my_out

Первая очевидная польза от ссылок состоит в том, чтобы обеспечить
передачу адреса объекта, а не самого объекта, в фукнкцию вывода (в
некоторых языках это называется передачей параметра по ссылке):

ostream& operator<<(ostream& s, complex z) {
return s << "(" << z.real << "," << z.imag << ")";
}