§ 3. Перегрузка операций
3.2. Логический тип данных
Для стандартных типов данных таких как int или double ввод и вывод реализован через стандартные операторы >> и <<. Эти же операторы перегружены для ввода-вывода строк. Для пользовательских типов данных, имеющих множество полей, также можно перегрузить операторы ввода-вывода. Перегрузка операторов << и >> намного упрощает процесс вывода объекта на экран и получение пользовательского ввода с записью данных в объект класса. Рассмотрим перегрузку оператора <<. Оператор является бинарным оператором, поэтому его перегрузка будет аналогична перегрузке оператора «+», рассмотренной в примерах 3.5 и 3.6. Левым операндом у оператора << является объект cout, а правым — объект класса, который нужно вывести. Переопределяемый оператор должен возвращать значение типа ostream, объектом которого является cout. Параметры, описываемой функции, должны быть ссылками (примеры 3.7 и 3.8). Также ссылкой должен быть и возвращаемый результат, поскольку ostream запрещает свое копирование. Перегрузка оператора ввода происходит аналогично. Отличие в том, что cin является объектом типа istream (примеры 3.9 и 3.10). Ссылка на объект класса, являющийся вторым параметром, не может быть константой, поскольку объект изменяется при вводе. После перезагрузки операторов ввода и вывода их можно использовать также для чтения и записи файлов. |
Пример 3.7. Перегрузка оператора вывода << для класса Vect, определенного в примере 3.5. Объявление:
Описание:
Пример 3.8. Перегрузка оператора вывода << для класса Matrix, определенного в примере 3.6. Объявление:
Описание:
Пример 3.9. Перегрузка оператора вывода >> для класса Vect, определенного в примере 3.5. Объявление:
Описание:
Пример 3.10. Перегрузка оператора вывода >> для класса Matrix, определенного в примере 3.6. Объявление:
Описание:
|