Переопределение оператора присваивания

Как известно, если объекты принадлежат одному классу, к ним можно при­ менять операцию копирования. В этом случае по умолчанию выполняется побитовое копирование: объект, указанный слева от оператора присваивания "=" получает значения полей объекта, указанного справа от оператора присва­ивания. Хотя в большинстве случаев такая ситуация вполне приемлема, все же нередко приходится переопределять процедуру копирования объектов. Реализуется это посредством перегрузки оператора присваивания. В принципе, перегрузка оператора присваивания выполняется так же, как и прочих бинарных операторов. Однако оператор присваивания нельзя перегружать внешней функцией. Поэтому при перегрузке оператора присваивания определяется метод класса. Кроме того, следует помнить, что в каче­стве значения в методе перегрузки оператора присваивания возвращается объект, из которого вызывается метод. Пример перегрузки оператора при­сваивания приведен в примере.
#include
using namespace std;
//Описание класса:
class MComp{
public:
double Re;
double Im;
//Переопределение оператора присваивания:
MComp operator=(MComp x){
Re=x.Re+1;
Im=x.Im-1;
return *this;}
};
int main(){
MComp a,b;
a.Re=1;
a.Im=2;
//Присваивание объектов:
b=a;
cout << "b.Re = " << b.Re << "\n";
cout << "b.Im = " << b.Im << "\n";
return 0;
}
Онлайн всего: 18
Гостей: 18
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте