Страницы

Поиск по вопросам

среда, 9 января 2019 г.

Почему нужно возвращать ссылку на объект iostream

При перегрузке оператора вывода, зачем возвращать ссылку на объект iostream, а не просто объект iostream?
class A { public: int m_a; }; ostream& operator<<(ostream left, A a) { cout << a.m_a; return left; }


Ответ

Объекты класса std::ostream не являются копируемыми. У этого класса конструктор копирования и копирующий оператор присваивания определены как удалённые. Поэтому если из определения оператора вы уберете ссылку на поток, то компилятор сообщит об ошибке.

Комментариев нет:

Отправить комментарий