Объектга йўналтирилган программалаш


vector[4]=4 Xato: Massiv chegarasidan chiqish ro’y berdi!


Download 0.58 Mb.
bet46/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   42   43   44   45   46   47   48   49   ...   71
Bog'liq
С ОЙП

vector[4]=4
Xato: Massiv chegarasidan chiqish ro’y berdi!
vector[5]=–1
Шунга эътибор бериш керакки, operator[] функцияси мурожаат қайтаради (сон қийматини эмас) ва шу сабабли бу функцияни қиймат бериш операторининг икки томонида ҳам қўллаш имкони юзага келади.
Функцияларни чақириш операторини қайта юклаш
Қавслар воситасида амалга ошириладиган функцияни чақириш оператори қуйидаги синтаксисга эга бўлган бинар оператор ҳисобланади:
<ифода>(<ифодалар рўйхати>)
Бу ерда <ифода> – биринчи операнд, ҳамда <ифодалар рўйхати> – мажбурий бўлмаган иккинчи операнддир. Функцияни чақириш операторининг оператор функцияси синфнинг ностатик функция – аъзо кўринишида эълон қилиниши керак. Функцияни чақириш операторини қайта юклашга зарурат, одатда кўп параметрни талаб қиладиган амалларни бажаришда юзага келади.
Функцияни қайта юклаш оператори қайта юкланганда, у фақат қавс ичидаги ўзи эълон қилинган синф объектларига бўлган мурожаатни ўзгартиради, лекин функция чақирилиш жараёнига таъсир қилмайди.
Функцияни чақириш операторини қайта юклашга мисол кўрайлик:
#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()(int dx, int dy)
{ x+=dx; y+=dy; return *this;};
};
int main()
{
int x,y;
Nuqta N1,N2;
// Nuqta синфининг қайта юкланган функцияни чақириш
// операторининг оператор функциясини N1 объект учун
// чақириш.
N2=N1(5,10);
N2.Qiymat_xy(x,y);
cout<<”1–chaqirishda: N2.x=”<
N2=N2(1,2);//қайта юкланган функцияни чақириш оператори
N2.Qiymat_xy(x,y);
cout<<”2–chaqirishda: N2.x=”<

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling