Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Перегрузка операторов вывода

Определение 1

Перегрузка операторов вывода — это повторное определение операторов вывода.

Введение

Перегрузка операторов, по сути, является наиболее практичным методом обращения к функциям, но нельзя ею злоупотреблять. Применять её необходимо для упрощения написания кода, но при условии, что не будет трудностей в чтении. Следует так же помнить о невозможности перегружать операторы вместе с включёнными типами. Выполнять перегрузку можно лишь пользовательских классов.

Синтаксические формы перегрузки операторов схожи с представлением функции по имени operator@. Здесь @ является определителем оператора. Ниже приведён пример, поясняющий сказанное:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 1. Пример. Автор24 — интернет-биржа студенческих работ

В этом примере оператор является членом класса, а аргумент формирует значение, которое находится справа от оператора. Известны два главных метода перегрузки операторов:

  1. Функции глобального масштаба.
  2. Дружественные функции для класса или функции, представляющие сам класс.

Как правило, операторы (не считая условные) выполняют возврат объекта или ссылки на тип, относящихся к нему аргументов.

Перегрузка унарных операторов

Приведём образцы выполнения перегрузки унарных операторов для указанного ранее класса Integer. Они будут определяться как дружественные функции вместе с операторами увеличения и уменьшения:

Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

Рисунок 2. Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

Рисунок 3. Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

«Перегрузка операторов вывода» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

Рисунок 4. Образцы перезагрузки. Автор24 — интернет-биржа студенческих работ

Замечание 1

То есть компилятор способен отличать префиксные и постфиксные варианты уменьшения (декремента) и увеличения (инкремента).

Перегрузка оператора вывода

Для обеспечения поддержки типом класса операций ввода и вывода, следует выполнить перегрузку этих операторов. Приведём конкретный пример перегрузки оператора вывода для класса WordĆount:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 5. Пример. Автор24 — интернет-биржа студенческих работ

Выводить или нет последний символ очередной строки, решает сам программист. Но рекомендуется это не осуществлять, так как операторы вывода при встроенном типе не выполняют печать этого символа, пользователь ждёт такого же эффекта и от операторов в других классах. Оператор вывода, который был определён в классе WordCount, возможно применять совместно со всякими иными операторами:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 6. Пример. Автор24 — интернет-биржа студенческих работ

Программа выполняет вывод на экран:

wd:

sadnéss

Оператор вывода является бинарным оператором, возвращающим ссылку на объект класса ostréam. Обобщённая структура определения оператора вывода, который возможно перегружать, может быть представлена в следующем виде:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 7. Пример. Автор24 — интернет-биржа студенческих работ

Первым аргументом будет ссылка на òstream, а вторым аргументом выступает ссылка (как правило, постоянная) на объект некоего класса. Выполняется возврат ссылки на òstream. Значением выступает объект òstream, так как именно для него осуществлялся вызов оператора. Так как ссылка это есть первый аргумент, то оператор вывода необходимо определить в виде обычной функции, а не членом класса. Если же оператору требуется доступ к закрытым членам, то нужно выполнить его объявление в другом классе. Предположим, Lòcation является классом, где сохраняются номер строки и колонки слова входа. Определить можно следующим способом:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 8. Пример. Автор24 — интернет-биржа студенческих работ

Выполним изменение определения класса WordCòunt, путём включения в его состав вектора òccurList объектов Lòcation и объект wòrd класса strìng:

Пример. Автор24 — интернет-биржа студенческих работ

Рисунок 9. Пример. Автор24 — интернет-биржа студенческих работ

В strìng и Locatìon выполнено определение оператора вывода орèrator().

Дата написания статьи: 13.12.2019
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot