if (this==&ob) return *this;
назорат кўрсатмасига эга ва у хатолик рўй беришига йўл қўймайди.
Унар операторларни қайта юклаш
Унар операторлар учун фақат битта операнд керак бўлади. Унар операторни синфнинг функция–аъзоси кўринишида қайта юклашда бу ягона операнд бу амални чақирган объектнинг ўзи ҳисобланади. Шу сабабли, унар операторнинг оператор функцияси ностатик функция-аъзо сифатида эълон қилинади ва у қуйидаги кўринишга эга бўлади:
<қайтарувчи қиймат тури > operatorX();
бу ерда <қайтарувчи қиймат тури > функция қайтарадиган қиймат тури, X– қайта юкланаётган унар оператор.
Агар оператор функция глобал равишда эълон қилинганда, у қуйидаги синтаксисга жавоб бериши керак:
<қайтарувчи қиймат тури > operatorX(<параметр тури> <параметр>);
бу ерда <параметр тури> – параметр тури ва <параметр> – функция параметри.
Плюс ва минус унар операторларни қайта юклашга мисол кўрайлик.
#include
class Nuqta
{
int x,y;
public:
Nuqta(int _x,int _y){x=_x; y=_y;}
Nuqta(){x=0; y=0;}
Qiymat_xy(int & _x,int & _y){_x=x; _y=y;}
Nuqta operator+();
Nuqta operator-();
};
Nuqta & Nuqta::operator+()
{
x=+x;
y=+y;
return *this;
}
Nuqta & Nuqta::operator+()
{
x=-x;
y=-y;
return *this;
}
int main()
{
int a,b;
Nuqta N1(-10,20);
N1=+N1; //қайта юкланган плюс операторини чақириш
N1.Qiymat_xy(a,b);
cout<<"N1.x=”<
N1=-N1; //қайта юкланган плюс операторини чақириш
N1.Qiymat_xy(a,b);
cout<<"N1.x=”<
return 0;
}
Программа ишлаши натижасида экранда
Do'stlaringiz bilan baham: |