Переопределение оператора присваивания
Как известно, если объекты принадлежат одному классу, к ним можно при менять операцию копирования. В этом случае по умолчанию выполняется побитовое копирование: объект, указанный слева от оператора присваивания "=" получает значения полей объекта, указанного справа от оператора присваивания. Хотя в большинстве случаев такая ситуация вполне приемлема, все же нередко приходится переопределять процедуру копирования объектов. Реализуется это посредством перегрузки оператора присваивания. В принципе, перегрузка оператора присваивания выполняется так же, как и прочих бинарных операторов. Однако оператор присваивания нельзя перегружать внешней функцией. Поэтому при перегрузке оператора присваивания определяется метод класса. Кроме того, следует помнить, что в качестве значения в методе перегрузки оператора присваивания возвращается объект, из которого вызывается метод. Пример перегрузки оператора присваивания приведен в примере.
#includeusing 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; }