69710

Перевантаження операторів за допомогою дружніх функцій

Лекция

Информатика, кибернетика и программирование

Оператори можна перенавантажувати за допомогою дружніх функцій, які не являються членами класу. Це означає, що дружні функції не отримують неявно покажчик this. Отже, перевантажена операторна функція отримує параметри явно. Таким чином, при перевантаженні бінарного оператора дружня...

Украинкский

2014-10-09

23 KB

0 чел.

Тема 10: Перевантаження операторів за допомогою дружніх функцій

Оператори можна перенавантажувати за допомогою дружніх функцій, які не являються членами класу. Це означає, що дружні функції не отримують неявно покажчик this. Отже, перевантажена операторна функція отримує параметри явно. Таким чином, при перевантаженні бінарного оператора дружня функція отримує два параметри, а при перевантаженні унарного оператора — один. Першим параметром дружньої функції, що перенавантажує бінарной оператор, є його лівий операнд, а другим — правий операнд.

Наступна програма демонструє перевантаження унарного та бінарного операторів за допомогою дружніх функцій.

 

#include <iostream.h>

class car {

int speed;

public:

car(int nSpeed=0) { speed = nSpeed; }

friend car operator+(car lp, car rp);

friend car operator--(car &ob);

};

car operator+(car lp, car rp) {

car temp;

temp.speed = lp.speed + rp.speed;

return temp;

}

car operator--(car &ob) {

ob.speed--;

 return ob;

}

Якщо дружні функції застосовуються для перевантаження операторів інкременту та декременту, їх операнди слід передавати за допомогою посилань. Це необхідно тому, що дружня функція не отримує покажчика this. Оператор "++", наприклад, повинен модифікувати свій операнд. Якщо перенавантажувати цей оператор за допомогою дружньої функції, як завжди, то операнд буде передаватися по значенню. Це означає, що дружня функція не зможе змінити цей параметр. Проте цю проблему можна вирішити, якщо передати операнд дружній функції за допомогою посилання. В цьому випадку всі зміни усередині функції будуть відбиватися на її фактичному параметрі.


 

А также другие работы, которые могут Вас заинтересовать

2157. Технический анализ рынка ценных бумаг 13.9 MB
  Методы анализа финансовых рынков. Постулаты технического анализа. Теория Доу. Графики технического анализа. Правила построения и анализа трендовых моделей. Осцилляторы: принципы построения расчетов.
2158. Свеклоуборочные машины 1.35 MB
  Цель работы: овладеть знаниями по устройству, технологическому процессу и регулировкам корнеуборочной машины КС-6Б. Устройство и принцип работы лабораторной установки.
2159. Теоретические вопросы генной инженерии 408.38 KB
  Трансгенные организмы. Особенности трансформации у про – и эукариот. Банки генов. Особенности репликации ДНК у про – и эукариот. Доказательства полуконсервативного способа репликации ДНК. Губки и кишечнополостные как низшие многоклеточные. Сочетание в их строении и физиологии архаичных и ароморфных черт. Сравнительная характеристика пищеварительной системы в различных типах беспозвоночных. Основные направления ее эволюции.
2160. Прикладная теория цифровых автоматов 4.51 MB
  Общая постановка задачи синтеза комбинационных схем. Особенности синтеза многоуровневых схем. Интерпретация основных понятий теории вероятностей на основе теории множеств. Равномерное распределение непрерывной случайной величины. Характеристики СМО с абсолютными приоритетами. Однопросмотровый, двухпросмотровый и многопросмотровый ассемблеры. Объекты ядра в ОС Windows. Базовый логический элемент транзисторно-транзисторной логики.
2161. Теория химии. Органическая и неорганическая химия и методика ее преподавания 3.36 MB
  Расчетные химические задачи, их типы. Внеклассная работа по химии, её принципы, формы, направления. Политехнизация знаний по химии. Общая характеристика разбавленных растворов неэлектролитов. Производные карбоновых кислот: соли, галогенангидриды, ангидриды, эфиры, амиды и их взаимные переходы. Механизм реакции этерификации.
2162. Фізика. Теорія и практика фізичних процессів 9.24 MB
  Порівняйте основні властивості біполярних і польових транзисторів з ізольованим затвором. Обґрунтуйте переваги використання транзисторів інтегральних мікросхем з бар`єром Шотткі. Проаналізуйте умови стаціонарної генерації випромінювання напівпровідникових лазерів. Як зміниться критична густина струму, якщо ширина робочого тіла інжекційного лазера зміниться вдвічі.
2163. Технологические процессы в машино-строении 8.29 MB
  Элементы теплофизики металлургических и литейных процессов. Метод точечных источников тепла. Выравнивание температуры в неограниченном стержне. Оценка потерь тепла через стены шахтной печи при стационарном теплообмене с окружающей средой. Кинематические и геометрические параметры способов обработки резанием. Силы при фрезеровании торцово коническими прямозубыми фрезами.
2164. Определение шага расстановки грузов при укладке трубопровода 16.62 KB
  Цель: Рассчитать шаг расстановки исследуемых чугунных грузов при укладке нефтепровода через болото.
2165. Проверка подземного и наземного (в насыпи) трубопровода на прочность и недопустимость пластических деформаций 24.5 KB
  Цель: Проверка на прочность, на недопустимость пластических деформаций участок магистрального трубопровода с наружным диаметром - Dн и толщиной стенки – δ.