Xulosa Asosiy va qo’shimcha adabiyotlar kirish


unar operatorlarni yuklash



Download 213,04 Kb.
bet4/7
Sana27.07.2021
Hajmi213,04 Kb.
#130082
1   2   3   4   5   6   7
Bog'liq
Qurbonov Zokir

1.3. unar operatorlarni yuklash

Qayd etish kerakki, qiymat berish operatori bajarilgandan keyin chap tomondagi operand o‘zgaradi, chunki unga yangi qiymat beriladi. Shuning uchun qiymat berish operatorining operator funksiyasi uni chaqirilgan obyektga ko‘rsatkichni qaytarishi shart. Buning uchun funksiya nooshkor ravishda sinf funksiyalariga birinchi parametr sifatida uzatiladigan this ko‘rsatkichini qaytarishi yetarli. O‘z navba-tida funksiyaning this ko‘rsatkichini qaytarishi quyidagi ko‘rinishdagi qiymat berish amallarini «tushunish» imkonini beradi:

nuqta1=nuqta2=nuqta3;

Quyidagi misol qiymat berish operatorini qayta yuklashni namoyon qiladi:

class Nuqta

{


int x,y; 171

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;}

bool operator==(Nuqta ob);

Nuqta & operator=(Nuqta & ob);

};


bool Nuqta::operator==(Nuqta ob)

{ return (x==ob.x && y==ob.y);}

Nuqta & Nuqta::operator=(Nuqta & ob)

{


if (this==&ob) return *this;

x=ob.x;

y=ob.y;

return *this;

}

void main()



{

int a,b;

Nuqta nuqta1(10,20),nuqta2(20,25),nuqta3;

nuqta3=nuqta2;

if(nuqta2==nuqta3)

Console.Write("nuqta2 va nuqta3 o'zaro teng.\n";

else Console.Write("nuqta2 va nuqta3 o'zaro teng emas.\n";

nuqta3=nuqta2=nuqta1;

if(nuqta1==nuqta3)

Console.Write("nuqta1 va nuqta3 o'zaro teng.\n";

else Console.Write("nuqta1 va nuqta3 o'zaro teng emas.\n";

nuqta3.Qiymat_xy(a,b);

Console.Write("nuqta3.x="<

n1=-n1; //qayta yuklangan minus operatorini chaqirish

n1.Qiymat_xy(a,b);

Console.Write("n1.x=”<

}


Programma ishlashi natijasida ekranda

n1.x=-10 n1.y=20

n1.x=10 n1.y=-20

satrlari paydo bo‘ladi.

Xuddi shu natijalarga global operator funksiyalarni sinfning do‘st funksiyalari

ko‘rinishida e’lon qilish orqali erishish mumkin:

friend Nuqta operator+(Nuqta & ob);

friend Nuqta operator-(Nuqta & ob);

Bu funksiyalar aniqlanishi

friend Nuqta operator+(Nuqta & ob)

{

ob.x=+ob.x;



ob.y=+ob.y;

return ob;

}

friend Nuqta operator-(Nuqta & ob)



{

ob.x=-ob.x;

ob.y=-ob.y;

return ob;

}

Ushbu funksiyalarni chaqirish natijalari yuqoridagi funksiyalar bilan bir xil



bo‘ladi. Inkrement va dekrement operatorlari, ularning prefiks va postfiks ko‘rinishlari bo‘lishi hisobiga qayta yuklash nuqtai-nazaridan alohida kategoriyaga tushadi. Prefiks va postfiks ko‘rinish-larni farqlash uchun quyidagi qoidalarga amal qilinadi: prefiks ko‘rinishni qayta yuklash, odatdagi unar operatorni qayta yuklash bilan bir xil; postfiks ko‘rinish uchun operator funksiya qo‘shimcha int turidagi parametrga ega bo‘ladi. Amalda bu parametr ishlatilmaydi va funksiyani chaqirishda uning qiymati 0 bo‘ladi (zarurat bo‘lganda ishlatilishi mumkin). Bu parametrning vazifasi - kompilyatorga operatorning postfiks ko‘rinishi ishlatilayotganligini bildirishdir. Quyidagi misolda Nuqta sinfi uchun inkrement va dekrement operator-larini qayta yuklash ko‘rsatilgan:

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++(); // prefiks inkrement uchun

Nuqta operator++(int); // postfiks inkrement uchun

Nuqta & operator––(); // prefiks dekrement uchun

Nuqta operator––(int); // postfiks dekrement uchun

};

Nuqta & Nuqta::operator++()



{

x++;


y++;

return *this;

}

Nuqta Nuqta::operator++(int)



{

Nuqta Oraliq=*this;

++*this;

return Oraliq;

}

Nuqta & Nuqta::operator--()



{

x--;


y--;

return *this;

}

Nuqta Nuqta::operator--(int)



{

Nuqta Oraliq=*this; 175

--*this;

return Oraliq;

}

void main()



{

int a,b;

Nuqta n1(-10,20);n2(15,25),n3;

++n1; //prefiks inkrement operatorini chaqirish

n1.Qiymat_xy(a,b);

Console.Write("(++n1).x=”<

n1++; //postfiks inkrement operatorini chaqirish

n1.Qiymat_xy(a,b);

Console.Write("(n1++).x=”<

n3=--n2; //prefiks dekrement operatorini chaqirish

n3.Qiymat_xy(a,b);

Console.Write("n3=--n2; => n3.x="<

n1.Qiymat_xy(a,b);

Console.Write("n1.x="<

n1++; //postfiks inkrement operatorini chaqirish

n1.Qiymat_xy(a,b);

Console.Write("(n1++).x=”<

n3=--n2; //prefiks dekrement operatorini chaqirish

n3.Qiymat_xy(a,b);

Console.Write("n3=--n2; => n3.x="<

n1.Qiymat_xy(a,b);

Console.Write("n1.x="<Download 213,04 Kb.
Do'stlaringiz bilan baham:

1   2   3   4   5   6   7




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish