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


 

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

22277. СТРОМАЛЬНО-СОСУДИСТЫЕ ДИСТРОФИИ 42.5 KB
  Мукоидное набухание Определение – это нетяжелая обратимая дезогранизация соединительной ткани. В норме в соединительной ткани белки и гиалуроновая кислота находятся в связанном состоянии в виде белковополисахаридных комплексов. Это ведет к набуханию волокон соединительной ткани и набуханию основного вещества. Микро Набухает основное вещество и волокна соединительной ткани.
22278. ТУБЕРКУЛЕЗ. Первичный туберкулезный комплекс (ПТК) 35 KB
  Вызывает туберкулез микобактерия туберкулеза палочка Коха. Туберкулез подразделяют на первичный гематогенный и вторичный. Первичный туберкулез – туберкулез у людей впервые инфицированных микобактерией характеризующийся возникновением первичного туберкулезного комплекса первичный аффект лимфангит лимфаденит.
22279. ТУБУЛОПАТИИ. Острая тубулопатия или острый некротический нефроз 36 KB
  Макро: почки увеличены набухшие отечные корковый слой бледносерый мозговой – темнокрасный. Больные чаще всего погибают в первые две стадии от уремии но с помощью искусственной почки большинство больных можно спасти. ПИЕЛОНЕФРИТ Определение: пиелонефрит – это воспалительное бактериальное заболевание с поражением лоханки пиелит и межуточной ткани почки. нисходящий гематогенный механизм – возбудитель попадает в почки из первичного внепочечного очага воспаления ангина пневмония и т.
22280. ХРОНИЧЕСКИЕ НЕСПЕЦИФИЧЕСКИЕ ЗАБОЛЕВАНИЯ ЛЕГКИХ (ХНЗЛ) 41 KB
  Классификация ХНЗЛ В группу ХНЗЛ входят следующие болезни: Хронический бронхит Бронхоэктазы Хроническая пневмония Эмфизема легких Хронический абсцесс легкого Пневмосклероз Интерстициальные болезни легких ИБЛ. Выделяют 3 патогенетические механизма ХНЗЛ: Бронхитогенный механизм – в основе хронический бронхит и его осложнения бронхоэктазы пневмосклероз эмфизема. Исходы и осложнения: бронхоэктаз Эмфизема Пневмосклероз. ЭМФИЗЕМА ЛЕГКИХ Определение: эмфизема – это повышенное содержание воздуха в легких и увеличение их...
22281. Эндокринопатии Клинико-морфологические формы 24 KB
  По гистологическому строению зоб бывает колллоидным макрофолликулярным микрофолликулярным и смешанным и паренхиматозным Клиникоморфологические формы зоба: Эндемический зоб возникающий в определенных местах где мало йода в воде. Спорадический зоб появляется в молодом возрасте и у взрослых. Базедов зоб базедова болезнь – названа по фамилии немецкого врача – Базедов.
22282. БОЛЕЗНИ ПЕЧЕНИ 40.5 KB
  ГЕПАТОЗЫ – это болезни печени характеризующиеся дистрофией и некрозом гепатоцитов. ГЕПАТИТЫ – заболевания печени в основе которого лежит воспаление проявляющееся как в дистрофии и некрозе гепатоцитов так и в клеточной инфильтрации стромы. ОПУХОЛИ – болезни печени с развитием в ткани печени опухолевого процесса первичного или вторичного происхождения метастазы в печени.
22283. БОЛЕЗНИ ПОЧЕК (НЕФРОПАТИИ) 35.5 KB
  Гломерулопатии – это заболевания которые характеризуются первичными воспалительными или дистрофическими поражениями клубочков гломерул почек что ведет к нарушению функции фильтрации. Классификация гломерулопатий: гломерулонефриты нефротический синдром амилоидоз почек диабетический гломерулосклероз печеночный гломерулосклероз. Гломерулонефриты – это группа заболеваний почек для которых характерно: двухсторонний процесс воспалительные негнойные поражения клубочков гломерул почечные симптомы – гематурия эритроциты в моче...
22284. ВОЗДУШНО-КАПЕЛЬНЫЕ ИНФЕКЦИИ 35.5 KB
  Все изменения при этой болезни связаны с попаданием токсина в кровь – токсинемией. Экзотоксин всасывается в кровь что ведет к тяжелым общим изменениям со стороны миокарда нервной системы выделительной системы. Местные изменения в миндалинах при фиксации на них стрептококка характеризуются воспалением первичный скарлатинозный аффект с присоединением регионарного лимфаденита первичный скарлатинозный комплекс. Местные изменения в 1й период локализуются в зеве и миндалинах.
22285. ВОСПАЛЕНИЕ. Морфогенез 40.5 KB
  Этилогия Агенты воспаления факторы вызывающие воспаление: биологические агенты – бактерии вирусы иммунные комплексы физические агенты – травмы высокие и низкие температуры химические агенты – токсины и яды бактериальные и не бактериальные яды. Морфогенез Воспаление состоит из трех стадий: альтерация экссудация пролиферация. Гепатит – воспаления печени плеврит – воспаление плевры гастрит – воспаление желудка.