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


 

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

45748. Философские исследования 33.5 KB
  Философские исследования - одна из двух наряду с Логико-философским трактатом важнейших работ крупнейшего философа XX века Людвига Витгенштейна суммирующая его поздние взгляды. В отличие от Трактата в данной работе объектом исследования Витгенштейна выступает не идеальный язык язык как картина мира который есть всё то что происходит а обыденный язык человеческого общения. Идеи Витгенштейна нашли отражение и в философии постмодернизма. Кроме того влияние Философских исследований прослеживается в современной литературе...
45749. Истина и метод 25 KB
  Истина и метод Whrheit und Methode 1960. Как и в сфере искусства в историческом познании истина раскрывается не только в научных суждениях выносимых с воображаемой дистанции по отношению к предмету и обеспеченных определенными правилами метода но и благодаря вовлеченности познающего в целостность исторического процесса который самим познающим и совершается. Эстетическая равно как и историческая истина есть истина которую совершают осуществляют.
45750. Гегель. Наука Логики 27.5 KB
  Наука Логики. В этом смысле наука логики есть изложение самой Абсолютной Идеи в ее необходимом развертывании. Именно в этом смысле Наука логики является фундаментом всей системы гегелевской философии. Следует заметить что Наука логики не опровергает формальную логику но по замыслу Гегеля развивает понимание логического до уровня спекулятивного.
45751. Гегель. Кто мыслит абстрактно? 31.5 KB
  Кто мыслит абстрактно в ней речь идетде о метафизике. доказывается что какие бы то ни было объяснения на этот счет совершенно излишни: именно потому что свет прекрасно знает что такое абстрактное он его и избегает. в добропорядочном обществе каждый из присутствующих прекрасно знает что значит мыслить и что такое абстрактно а именно в таком обществе мы и находимся. Вопрос стало быть заключается только в том чтобы показать на того кто мыслит абстрактно.
45752. Гуссерль. Картезианские размышления 40 KB
  Феноменология определяется в данной работе Гуссерля как самоистолкование трансцендентального ego показывающее как оно конституирует в себе трансцендентное; как трансцендентальный идеализм трансцендентальная теория познания в отличие от традиционной где основной проблемой является проблема трансцендентного бессмысленная в феноменологии. Трансцендентальнофеноменологическая редукция эпохé делая мир лишь опытом феноменом обнаруживает что естественному бытию мира в качестве самого по себе более первичного бытия предшествует бытие...
45754. Критика способности суждения 24.5 KB
  Критика способности суждения нем. Кант также замечает что эстетическое не исчерпывается прекрасным нем. Помимо него существует возвышенное нем.
45755. Критика чистого разума 32.5 KB
  Кант начинает свои рассуждения со специфической классификации суждений. Он выделяет суждения синтетическиеаналитические и априорныеапостериорные.Синтетическими называются суждения несущие новое знание не содержащееся в понятии которое является их субъектом.Аналитическими называются суждения которые всего лишь раскрывают свойства присущие понятию субъекта содержащиеся в нём самом и не несут нового знания.
45756. Кун. Структуры научных революций 28.5 KB
  сформулировал новую концепцию развития науки и научного знания которая произвела настоящий переворот во всей философии науки. Внутри парадигмы существование науки определяется Куном как нормальная наука; ученые еще не подвергают сомнению свою научную деятельность которая состоит в вписывании фактов в уже существующую теорию. Прогресс имеет место только внутри нормальной науки.Периоду нормальной науки Кун противопоставляет деятельность ученых в рамках кризиса то есть период экстраординарной науки причем если целью нормальной науки...