При помощи перегрузки операторов можно добиться того, чтобы ввод-вывод значений объектов через потоки можно было использовать при помощи стандартных в этом случае операторов "<<" и ">>".
Перегрузить можно оператор вывода в поток ostream, что позволит использовать экземпляры класса в строке потока вывода с таким же синтаксисом, как и для встроенных типов.
При этом в качестве левого операнда оператор << должен иметь неконстантную ссылку на поток ostream, а значит данный оператор всегда определяется внешней функцией, а не методом класса.
В качестве результата следует возвращать исходную ссылку на поток.
Можно перегрузить оператор чтения из потока istream.
При этом в качестве левого операнда оператор >> должен иметь неконстантную ссылку на поток istream, а значит данный оператор всегда определяется внешней функцией, а не методом класса. Кроме того функция должна быть объявлена дружественной, чтобы иметь возможность модификации объекта.
В качестве результата следует возвращать исходную ссылку на поток.