Nuqta Nuqta::operator++()
{
x++;
y++;
return *this;
}
Nuqta Nuqta::operator++(int)
{
x++;
y++;
return *this;
}
Лекин бу вариантда бир хил амаллар кетма-кетлигини такрор ёзилади ва инкремент операторини турлича талқин қилиш билан боғлиқ хатоларни юзага келишига замин бўлади. Маъқул вариант– бу операторнинг префикс кўринишининг оператор функциясида оператор мазмуни аниқланади ва постфикс кўринишни қайта юклаш унга таянади.
Энди инкремент ва декремент операторларини дўст функциялар орқали қайта юклашни кўрамиз. Шунга эътибор бериш керакки, дўст функцияга мурожаат кўринишидаги аргумент узатилиши ва у ўзгартирилиб функция томонидан қайтарилиши керак бўлади.
#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;}
friend Nuqta & operator++(Nuqta &);// префикс инкремент
//постфикс инкремент
friend Nuqta operator++(Nuqta&,int);
friend Nuqta & operator––(Nuqta&); // префикс декремент
// постфикс декремент
friend Nuqta operator––(Nuqta&int);
};
Nuqta & operator++(Nuqta & ob)
{
ob.x++;
ob.y++;
return ob;
}
Nuqta operator++(Nuqta & ob,int)
{
Nuqta Oraliq=ob;
++ob;
return Oraliq;
}
Nuqta & operator--(Nuqta &)
{
ob.x--;
ob.y--;
return ob;
}
Nuqta operator--(Nuqta &,int)
{
Nuqta Oraliq=ob;
--ob;
return Oraliq;
}
Do'stlaringiz bilan baham: |