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


 

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

40057. Интернет и его применение в деятельности предприятия 298 KB
  Уровни работы сети. Сеть priori предполагалась ненадежной: любая часть сети может исчезнуть в любой момент. Передача данных в сети была организована на основе протокола Internet IP. Протокол IP это правила и описание работы сети.
40058. Оценка экономической эффективности применения ИТ в деятельности предприятия 900 KB
  Оценка экономической эффективности CRMпроекта. Метод оценки эффективности применения CRM. Коэффициенты оценки эффективности применения CRM. Проблемы внедрения CRMсистем.
40059. Современные информационные технологии и системы в экономике 334 KB
  Современные информационные технологии и системы в экономике. Чем точнее и объективнее информация находящаяся в распоряжении системы управления чем полнее она отражает действительное состояние и взаимосвязи в объекте управления тем обоснованнее поставленные цели и реальные меры направленные на их достижение. Информационное обеспечение это часть системы управления которая представляет собой совокупность данных о фактическом и возможном состоянии элементов управления и внешних условий функционирования процесса а также о логике изменения и...
40060. Корпоративные информационные системы масштаба предприятия 986 KB
  Системы управления отношениями с клиентами CRM. Определение CRMсистемы. Функциональность и коммуникации CRM. Преимущества применения CRM.
40061. Специализированные информационные системы менеджмента и маркетинга 940 KB
  Маркетинговые базы данных. Понятие маркетинговых баз данных. Способы обновления маркетинговых баз данных. Маркетинговые базы данных.
40062. Создание лексико-семантической основы ИПЯ 42.5 KB
  Приобрести навыки представления лексики в виде иерархической классификации классификаторов информационнопоисковых тезаурусов. Задание 1: Организационно представить лексику в виде иерархической классификации. Требования к отчету: Итоги выполнения задания представить в виде фрагмента иерархической классификации: Языки информационнопоисковые 11. Языки информационнопоисковые классификационные Системы классификации...
40063. Алфавит и лексика ИПЯ 56.5 KB
  Задание 1: Дать характеристику алфавита различных ИПЯ ББК УДК Государственного рубрикатора НТИ информационнопоисковых тезаурусов. Таблица 1 Характеристика алфавита ИПЯ Наименование ИПЯ Состав алфавита Виды обозначений Примеры УДК Цифровой Цифры Знак точка Знак двоеточие Знак распространения Знак круглые скобки Знак равенства Знак кавычки Знак стрелка Знак конгруэнтности .412 Технология работы: Проанализировать план выражения лексических единиц входящих в состав основных и вспомогательных таблиц заданных...
40064. Язык как знаковая система 45 KB
  Ознакомиться с видами знаков. Приобрести навыки определения структуры знаков. Рассмотреть сферу применения знаков при создании информационных продуктов.
40065. Парадигматические отношения в ИПЯ 51.5 KB
  Ознакомиться с видами парадигматических отношений. Овладеть практическими навыками распознавания парадигматических отношений в ИПЯ. Перечень лексических единиц Месяц декабрь Искусственный язык специализированный язык Танец народный танец Библиографическая запись поле данных Самолет фюзеляж Алфавит ИПЯ знак Год месяц...