Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Void main ( )

Void print ( void) void print ( void) | Перегрузка стандартных операций | Stroka Z; |


{ pair A (9, 19.0); A.display();

++A; A.display ();

- - A; A.display ();

A++; A.display ();

A- -; A.display (); }

Результат:

N = 9 X = 19

N = 10 X = 20

N = 9 X = 19

N = 10 X = 20

N = 9 X = 19

Перегрузка операции присваивания

Перегрузку операции ”=” разрешается реализовывать только через компонентную функцию класса!

 

 

Рассмотрим перегрузку для класса комплексных чисел:

Complex& Complex:: operator = (Complex & z)

{ re = z.re; im = z. im;

return * this; }

При выполнении

c2=c1;

операция функция вызывается для объекта с2, объект с1 передается в нее как параметр. Данным объекта с2 присваиваются данные объекта с1.

Функция возвращает текущий объект для того, чтобы можно было использовать операцию множественного присваивания:

с3 = с2 = с1;

Заметим, что в данном случае перегружать операцию присваивания нет особой необходимости. Если не перегружать “=”, то компилятор генерирует операцию присваивания по умолчанию, которая выполняет побайтовое копирование данных.

Однако в некоторых случаях, при наличии в классе данных, являющихся указателями на динамические участки памяти, буквальное копирование может привести к утечкам памяти.

 
 


При прямом копировании объект2=объект1 указателю объекта2 присвоится значение указателя объекта1. Участок памяти с данными 2 станет недоступным программе происходит утечка памяти. Уничтожение объекта 1 автоматически уничтожит объект2.

В этом случае необходимо перегрузить операцию присваивания:

class A { int* data;


Дата добавления: 2015-07-19; просмотров: 39 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
V.vivod| Complex c1;

mybiblioteka.su - 2015-2024 год. (0.006 сек.)