"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автора(указатель на 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 << ")"; } |
|
|