Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КПиЯП.docx
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
75.59 Кб
Скачать

Перегрузка бинарных операторов

Когда оператор-функция перегружает бинарный оператор, у неё будет только один параметр. Данный параметр получит тот объект, который располагается справа от оператора, объект слева генерирует вызов оператора функции и передается неявно с помощью указателя this :

Class coord

{ int x,y;

Public:

coord(){x=0;y=0;}

coord(int I,int j)

{x=I,y=j;}

Void get_xy (int &I,int &j)

{i=x;j=y;

Coord operator +(coord ob2);

};

Coord coord:: operator +(coord ob2)

{coord temp;

Temp.x = x+ob2.x;

Temp.y = y +ob2.y;

Return temp;

}

Int main ()

{ coord ob1(10,10), ob3(5,3), ob4;

Int x,y;

Ob4= ob1+ ob3;

Ob4.get_xy (x,y);

Cout<<” (ob1+ob3)x: “<<x<<”,y: “<<y<<endl;

Return 0;

}

Перегрузка унарных операторов аналогична перегрузке бинарных за исключение того, что мы имеем дело с одним оператором. При реализации оператора функции у неё не будет параметров, т.к. имеется только один операнд, который и генерирует вызов

Class coord

{ int x,y;

Public:

coord(){x=0;y=0;}

coord(int I,int j)

{x=I,y=j;}

Void get_xy (int &I,int &j)

{i=x;j=y;

Coord operator +(coord ob2);

};

Coord coord:: operator ++

{x++;

Y++;

Return *this;

}

Int main ()

{ coord ob1(10,10);

Int x,y;

++ob1;

Ob1.get_xy(x,y);

Cout<<” x: “<<x<<”,y: “<<y<<endl;

Return 0;

}