Настоящий класс ostream определяет операцию <<, чтобы сделать удобным вывод нескольких объектов одним оператором. Давайте посмотрим, как это сделано.
Чтобы определить @, где @ - некоторая операция языка C++, для каждого определяемого пользователем типа вы определяете функцию с именем operator@, которая получает параметры соответствующего типа. Например:
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 << ")";
}
Достаточно интересно, что тело функции осталось без изменений, но если вы будете осуществлять присваивание s, то будете воздействовать на сам объект, а не на его копию. В данном случае то, что возвращается ссылка, также повышает эффективность, поскольку очевидный способ реализации ссылки - это указатель, а передача указателя гораздо дешевле, чем передача большой структуры данных.
Ссылки также существенны для определения потока ввода, поскольку операция ввода получает в качестве операнда переменную для считывания. Если бы ссылки не использовались, то пользователь должен был бы явно передавать указатели в функции ввода.
class istream {
//...
int state;
public:
istream& operator>>(char≈);
istream& operator>>(char*);
istream& operator>>(int&);
istream& operator>>(long&);
//...
};
Заметьте, что для чтения long и int используются разные функции, тогда как для их печати требовалась только одна. Это вполне обычно, и причина в том, что int может быть преобразовано в long по стандартным правилам неявного преобразования, избавляя таким образом программиста от беспокойства по поводу написания обеих функций ввода.
Другие работы по теме:
Расчеты наличными денежными средствами 2
Расчеты наличными денежными средствами периодически осуществляются практически всеми субъектами предпринимательской деятельности независимо от их организационно-правовой формы, объемов реализации и прочих финансово-экономических показателей с целью ускорения расчетов и снижения издержек, связанных с оформлением безналичных операций.
Виды банков 3
Виды банков Различают: центральные банки, осуществляющие государственное регулирование банковской сферы и денежную эмиссию. коммерческие банки, осуществляющие предпринимательскую банковскую деятельность;
Силовой трансформатор тока или напряжения
Любой состоит из первичной обмотки, вторичной обмотки (их может быть несколько) и ферромагнитного сердечника, который выполняет функции магнитного провода. Трехфазные трансформаторы оборудуются стабилизатором напряжения с тремя фазами, что позволяет выдерживать существенные нагрузки на электросеть.
Механика
F=0 F=ma F=ma Существуют такие системы отсчета, относительно которых поступательно движущееся тело сохраняет свою скорость постоянной, если действие на него других тел скомпенсировано.
Технология деревообработки
Министерство образования Российской Федерации СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ Институт заочно-дистанционного образования и довузовской подготовки
«Перегрузки в авиации»
Силы тяготения являются, очевидно, первыми, с которыми мы знакомимся еще с детских лет. В физике их часто называют гравитационными (от латинского – тяжесть)
Экзамен 9 семестр Всего- 300 Требования стандарта по дисциплине
«Требованиям к обязательному минимуму содержания и уровня подготовки выпускника высшей школы», утв. Госкомитетом РФ по высшему образованию от 27 марта 2000 г по циклу «Дисциплины специализации» од. С. Оо: Автоматика и робототехника, согласно которым специалист после изучения дисциплины должен
Защита электродвигателей промышленного назначения
Современные стандарты большинства стран мира, в том числе и России, предъявляют все более высокие требования к повышению безопасности работы персонала и росту экономической эффективности во всех отраслях промышленности.
Ремоделирование сердца
Термин "ремоделирование сердца" был предложен N. Sharp в конце 70-х годов прошлого века. Ишемическое ремоделирование - динамический, обратимый процесс изменения толщи миокарда, размера и формы камер сердца, дисфункции левого желудочка.
Лечение отека легких 3
Обзорная статья «Лечение отека легких» Раповец В.А., врач-кардиолог Содержание 1. Лечение отека легких (ОЛ). Общие положения. 2. Этиология. 3. Классификация гемодинамических механизмов развития сердечной недостаточности.
Пяточные шпоры
Боли в пяточной области, в народе называемые «пяточными шпорами» встречаются как у людей молодых, так и у пожилых, но на самом деле не являются самостоятельной болезнью. Пяточные шпоры чаще всего лишь симптом какого-то заболевания, одно из его проявлений
Акофф, Рассел Линкольн
Рассел Линкольн Акофф (12 февраля 1919 — 29 октября 2009) — известный учёный в областях исследования операций и теории систем, методы которых активно используются в теории организации и управления.
Алтус авиабаза
Алтус (авиабаза) Авиабаза ВВС США, расположенная в пределах города Алтус, Оклахома, США. Это в 6 км к востоку от центрального делового района Altus, город в округе Джексон.
Система управления проектами Spider
Разработка иерархии работ и формирование диаграммы Гантт. Расчет критического пути без ограничений на ресурсы. Формирование проекта, назначение ресурсов материалов стоимостных составляющих. Выравнивание загрузки ресурсов вручную и автоматически.
Программирование действий над матрицами на языке С++
Понятие матриц и операции, выполняемые с ними. Разработка программы для вычислений над матрицами в среде MS Visual Studio Express с применением языка программирования C++. Работа с библиотекой математического типа vector. Реализация перегрузки операций.
Примеры решения задач по программированию
Написание программы вычисления сопротивления электрической цепи, состоящей из двух параллельно и двух последовательно соединенных сопротивлений. Схема машинного алгоритма по условию задачи. Применение операций при написании программ на языке C/C++.
История развития вычислительной техники 2 2
Text Text 1953-1955. IBM 604, IBM 608, IBM 702 1953-1955. IBM 604, IBM 608, IBM 702 1965-1966. БЭСМ-6 60 000 транзисторов 200 000 диодов 1 млн. операций в секунду память – магнитная лента, магнитный барабан работали дл 90-х гг. Graphics
Тесты по Информатике 2
Тест по информатике Алгоритмы: виды, свойства 9 класс по учебнику Угриновича Н.Д. Алгоритм-это: Указание на выполнение действий, Система правил, описывающая последовательность действий, которые необходимо выполнить для решения задачи,
Микропроцессор КР580ИК
КР580ИК80 представляет собой 8-разрядный процессор, в котором совмещены операционное и управляющее устройства. Опишем кратко узлы этого процессора.
Понятия и Законы электростатики
IV правовой курс Понятия и Законы электростатики. выполнил: Скородумов Денис Сергеевич г. Донецк 2002 г. Понятия и Законы электростатики. Электризация –
Аудит операций с основными средствами 3
Аудит операций с основными средствами. Цель аудита основных средств (ОС) – формирование мнения о достоверности бухгалтерской отчетности по информации об ОС .
Роль воды в жизни человека
Основные физиологические функции воды. Обеспечение жизнедеятельности организма и соблюдение питьевого режима. Питьевые минеральные, столовые и лечебные воды. Гидрокарбонатные, хлоридные, сульфатные, смешанные, биологически активные и газированные воды.
Защита промышленных объектов
monax/order/ - рефераты на заказ (более 2300 авторов в 450 городах СНГ). Московская Государственная Академия Тонкой химической Технологии
Защита промышленных объектов
Определить величины избыточного давления при которых административное здание промышленого объекта получит среднее и слабое разрушения.