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


 

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

25816. Основные этапы речевого акта: образование воздушной струи, голосообразование, образование звуков 15.39 KB
  Этот отдел отвечает за силу голоса участвует в образовании речи обеспечивает плавность речи. Функция генераторного отдела: образование голоса и звуков. Функция резонаторного отдела: усиление голоса и звукообразования. Пассивные: отчётливость голоса достигается благодаря резонаторам.
25817. Особенности дыхания при голосообразовании 11.97 KB
  Поэтому речевое дыхание имеет свои особенности: дыхательный цикл который состоит из вдоха и выдоха удлиняется; продолжительность выдоха больше а вдох укорачивается; увеличивается жизненная ёмкость лёгких; частота дыхания уменьшается. при речевом дыхании вдох активней через рот; особенность выдоха в том что он осуществляется при участии дыхательных мышц.
25818. Характеристика голоса (сила, высота, тембр) 15.02 KB
  Основные характеристики голоса 1.Сила голоса. Обеспечивается сила голоса силой выдоха.
25819. Теории голосообразования: милоэлаксическая, нейрохронаксическая 14.58 KB
  Основная суть образование голоса фонация происходит на фазе выдоха при участии воздушной струи и голосовых складок. При этом колебание голосовых складок происходит пассивно под действием воздуха. При поражении иннервации речевого аппарата происходит нарушение речи и голосообразования.
25820. Заболевания наружного носа и носовой полости: Атрезии 24 KB
  Заболевания наружного носа и носовой полости: Атрезии. Врожденные аномалии наружного носа в виде полного его отсутствия расщепления кончика носа двойного носа и пр. встречаются крайне редко и не имеют такого практического значения как врожденные и приобретенные изменения в полости носа ведущие к нарушению проходимости носовой полости для вдыхаемого и выдыхаемого воздуха. Сужение и зарастание полости носа.
25821. Травмы. Искривления носовой перегородки. Инородные тела носа 15.29 KB
  Инородные тела носа. У 80 людей перегородка носа может быть незначительно деформирована. Искривлённая перегородка носа обычно приводит к затруднению дыхания. Чаще всего причина искривления перегородки носа травмы.
25822. Острый и хронический ринит. Связь заболевания носа и среднего уха 14.78 KB
  Связь заболевания носа и среднего уха. Рини́т насморк синдром воспаления слизистой оболочки носа. Острый ринит возникает как следствие воздействия на слизистую оболочку полости носа вирусной или бактериальной инфекции. Поражение распространяется на обе половины носа.
25823. Полипы носа 14.67 KB
  Полипы носа. Назальные полипы обычно делят на антрохоанальные полипы и этмоидальные полипы. Несмотря на их удаление во время хирургического вмешательства назальные полипы возникают повторно примерно в 70 случаев. Она может быть проведена под общей или местной анестезией полипы удаляют при помощи эндоскопической хирургии.
25824. Заболевания полости рта. Дефекты губ и нёба 16.78 KB
  Дефекты губ и нёба. Аномалии твёрдого нёба: слишком высокое и узкое готическое плоское и низкое расщелины твёрдого нёба. Расще́лина нёба разрыв расщелина в средней части нёба возникающая вследствие не заращения двух половин нёба в период эмбрионального развития. Может быть поражена лишь часть нёба например только мягкое нёбо или язычок нёба или же расщелина может проходить по всей длине сочетаясь с билатеральными расщелинами в передней части верхней челюсти; нередко такие дети рождаются с расщелиной губы.