return 0;
}
Программа ишлаши натижасида экранга қуйидаги сатрлар чиқади:
1–chaqirishda: N2.x=5 N2.y=10
2–chaqirishda: N2.x=6 N2.y=12
Келтирилган мисол учун
Nuqta N1(5,10);
ва
N1(5,10);
ифодаларини чалкаштирмаслик керак. Биринчи ифода синфнинг параметрли конструкторига мурожаатни англатса, иккинчиси – синфдаги функцияни чақириш оператори қайта юкланган оператор функцияни чақириш кераклигини билдиради. Мисол шуни кўрсатадики, функцияни чақириш оператори қайта юкланган синф объектига функция воситасида мурожаат қилиш мумкин.
Синф аъзоларига мурожаат операторларини қайта юклаш
Синф аъзоларига мурожаат операторларини қайта юклаш аъзоларни танлаш операторини (->) қайта юклаш орқали амалга оширилади («.» оператори қайта юкланмайди). Бу оператор унар ҳисобланади ва унинг оператор функцияси синфнинг ностатик аъзоси қилиб эълон қилиниши керак. Мос оператор функциянинг кўриниши қуйидагича:
<синф номи>* operator->() {<тил кўрсатмалари>};
Бу ерда <синф номи> – оператор тегишли бўлган синф номи. Синф аъзоларини танлаш операторини қайта юклаш, одатда қўлланиши айни пайтда ўринлими ёки йўқлигини назорат қилувчи «ақлли» кўрсаткичларни амалга оширишда ишлатилади.
Синф аъзоларини танлаш операторини қайта юклашга мисол келтирамиз:
#include
class Nuqta
{
int x,y;
public:
Nuqta(int _x,int _y){x=_x; y=_y;}
Nuqta(){x=0; y=0;}
Qiymat_X(){return x;}
Qiymat_Y(){return y;}
Nuqta & operator->();
};
Nuqta * Nuqta::operator->()
{
cout<<”Ob’ect elementiga murojaat: ”;
return this;
}
int main()
{
Nuqta N(5,10);
// Nuqta синфининг қайта юкланган аъзоларини танлаш
// операторининг оператор функциясини N объект учун
Do'stlaringiz bilan baham: |