Перегрузка потока в C ++ - PullRequest
       17

Перегрузка потока в C ++

0 голосов
/ 20 апреля 2010

почему void operator<<(ostream out, Test &t); вернуть ошибку, тогда как void operator<<(ostream &out, Test &t); нет?

1 Ответ

10 голосов
/ 20 апреля 2010

Поскольку вы не можете копировать потоки, вы должны передавать их по ссылке.

Обратите внимание, что каноническая форма operator<< такова:

std::ostream& operator<<(std::ostream& out, const Test &t)
{
   // write t into out
   return out;
}

важно возвращать поток, чтобы вы могли связать вывод вместе:

std::cout << Test() << '\n';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...