Допустим, хочу перегрузить оператор << для объекта класса, тогда в заголовочном файле в теле класса объявляю функцию
friend std::ostream& operator<<(std::ostream &os, const MyVector & other);
в файле с реализацей я ее, соответственно, определяю, но никак не могу понять, почему мы передаем поток по ссылке? почему возвращаем ссылку на поток, когда при определении возвращаем сам поток? И как это вообще, вернуть поток? Полагаю, такое непонимание у меня из-за того, что тема потоков до конца не ясна, буду благодарен, если кто-нибудь объяснит.
Во первых ссылки подразумевают, что вы не копируете обьект лишный раз передавая его в функцию и возвращая его.
Во вторых состояние потока должно быть отслеживаемо, поэтому мы должны иметь один объект входного (выходного) потока, а не копировать, тем более, что, как правильно заметил Harry
, потоки не копируются.
Возвращая ссылку, у нас также появляется возможность написать:
cout << a << b << c << d ...
Поскольку cout << а
является ссылкой на тот же cout
, ну и так далее.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли как то рандомить символы из ASCII C++? Если да то как? А то массивы символов не хочется вводить
Здравствуйте, нужна помощь с написанием быстрого считывания из файла с помощью getchar_unlock()В файле есть две строки не обязательно одинакового...