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


 

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

76856. Вены головы 186.78 KB
  Кровь из вен головы поступает в яремные вены шеи и внутреннее позвоночное сплетение. Поверхностные вены головного мозга впадают в венозные синусы твердой мозговой оболочки. cerebri superiores имеющих восходящее направление: вены пре и постцентральной извилин предлобные лобные теменные и затылочные которые впадают в верхний сагиттальный синус.
76857. Вены верхней конечности 179.85 KB
  В области надплечья и плеча они вливаются в глубокие вены. Вторые проходят вместе с артериями собирая кровь от костей мышц суставов и вливаясь в подключичные вены. Вены верхней конечности клапанные начинаясь от пальцев они формируют на кисти тыльные венозные сети и ладонные дуги с перфорантными ветвями на предплечье и плече поверхностные и глубокие вены с анастомозами между ними.
76858. Вены нижней конечности 182.02 KB
  Прободающие вены соединяют между собой многочисленные глубокие и поверхностные вены расположенные в разных плоскостях и уровнях. В области лодыжек перфорантные вены не имеют прямых связей с подкожной сетью. Поверхностные вены вливаются в глубокие в разных отделах ноги в подколенной ямке и под паховой связкой.
76859. Принципы строения лимфатической системы 182.88 KB
  Лимфатические капилляры отсутствуют в тех органах и тканях где кровеносные капилляры не имеют базальной мембраны: в головном и спинном мозге и их оболочках глазном яблоке внутреннем ухе эпителии кожи и слизистых оболочек в пульпе селезенки хрящах костном мозге и плаценте. Начиная с выносящих лимфатические сосуды располагают полулунными клапанами в виде складок эндотелия придающих сосуду снаружи четкообразный вид. Лимфатические сосуды подразделяются на висцеральные органные и париетальные поверхностные и глубокие. Внеорганные...
76860. Грудной проток 180.8 KB
  Образование протока явление многовариантное: слияние поясничных или кишечных или тех и других стволов правой и левой стороны; слияние только поясничных и кишечных стволов 25; образование стволами млечной цистерны cistern chyli в виде конусовидного ампулярного расширения 75; сетевидное начало в виде крупного петлистого сплетения из поясничных чревных брыжеечных стволов и выносящих сосудов. Проток возникает на уровне XII грудного II поясничного позвонков и располагается рядом с брюшной аортой. В грудном протоке от начала...
76861. Правый лимфатический проток 179.63 KB
  Он проходит рядом с подключичной веной имеет клапаны и сфинктер впадает либо в венозный угол и вены его образующие либо в правый лимфатический проток. Бронхомедиастинальный правый ствол truncus bronchomedistinlis собирается из выносящих лимфатических сосудов от средостенных трахеобронхиальных и бронхолегочных лимфатических узлов. Он имеет клапаны впадает в правый лимфатический проток или в правый яремный венозный угол или в вены его составляющие – внутреннюю яремную подключичную плечеголовную.
76862. Лимфатический узел 181.03 KB
  Лимфатические синусы в паренхиме узла делятся на краевой подкапсульный – sinus mrginlis seu subcpsulris корковые – sinus corticles мозговые – sinus medullres воротный – sinus chilris. По приносящим сосудам лимфа поступает в краевой синус из него в корковые из них – в мозговые синусы а потом – в воротный откуда начинаются выносящие лимфатические сосуды. Лимфатические узлы располагаются группами с вариабельным числом узлов в каждой 420 66404 всего образуется до 150 региональных групп. У висцеральных узлов наблюдается несколько...
76863. Лимфатические сосуды и узлы головы и шеи 182.17 KB
  Они формируются из однослойной сети кожных лимфатических капилляров и посткапилляров и впадают в поверхностные лимфатические узлы расположенные на границе головы и шеи. Поверхностные лимфатические узлы головы. Они принимают лимфу от лобной теменной височной областей наружного уха слуховой трубы верхней губы и от околоушной железы а направляют её в поверхностные и глубокие шейные узлы.
76864. Лимфатические сосуды и узлы руки 180.47 KB
  По поверхностным сосудам оттекает лимфа от кожи подкожной клетчатки поверхностной фасции поверхностных мышц используя крупные и длинные лимфатические сосуды трех групп латеральной медиальной и средней. Латеральные лимфатические сосуды 510 начинаются от кожи IIII пальцев латеральной поверхности кисти предплечья плеча проходят вместе с цефалической веной и впадают в подмышечные лимфатические узлы латеральную группу. Медиальные лимфатические сосуды 515 начинаются на IVV пальцах медиальной поверхности кисти предплечья...