Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet63/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   59   60   61   62   63   64   65   66   ...   90
Bog'liq
C majmua

Amallarning ortiqcha yuklanishi

C++ konkret sinf obyektlari bilan foydalanganda berilgan funksiyalarni bajara oladigan qilib ko’pgina amallar ishini qayta aniqlab chiqishga imkon beradi. Bu standart ma’lumotlar tipi kabi o’zining ma’lumotlar tipidan foydalanishga imkon beradi. Xos amallar uchun belgilashlar kiritish mumkin emas.


. .* ?: :: # ## sizeof
lardan tashqari C++ da mavjud ixtiyoriy amallarni ortiqcha yuklash mumkin.
Amallarmi ortiqcha yuklash maxsus ko’rinishdagi usul (funksiya-amallar) yordamida amalga oshiriladi va quyidagi prinsiplarga bo’ysunadi:

  • amallar ortiqcha yuklanishida standart tipdagi ma’lumotlarda foydalaniladigan argumentlar soni, amallar imtiyozlari va assotsiatsiya qoidalari (o’ngdan chapga yoki chapdan o’ngga) saqlanadi;

  • standart tipdagi ma’lumotlar uchun amallarni qayta aniqlash mumkin emas;

  • funksiya-amallar jimlik bo’yicha argumentlarga ega bo’lishi mumkin emas;

  • funksiya-amallar meros qilinadi (= dan tashqari);

  • funksiya-amallar static kabi aniqlanishi mumkin emas.

Funksiya-amallarni uchta usul bilan aniqlash mumkin: u singning usuli yoki sinfning do’stona funksiyasi yoki odatdagi funksiya bo’lishi lozim. Oxirgi ikki holda funksiya sinf, ko’rsatgich yoki sinfga murojaat tipiga ega bo’lgan hech bo’lmaganda bitta argumentni qabul qilishi lozim.
Funksiya-amal operator tayanch iborasini o’z ichiga oladi, undan keyin amalni qayta aniqlash ishorasi keladi:
Tip operator operatsiya (parametrlar ro’yxati) {funksiya tanasi}


Unar amallarni qayta yuklash

Unar funksiya-amal sinf ichida aniqlanib parametrlarsiz statik bo’lmagan usul yordamida ifodalanishi lozim, bunda operand bo’lib uni chaqirgan obyekt hisoblanadi, masalan:


class monstr{



monstr & operator ++() {++health; return *this;}
};
monstr Vasia;
cout << (++Vasia).get_health();

Agar funksiya sinfdan tashqarida aniqlansa, u sinf tipidagi parametrga ega bo’lishi lozim:


class monstr{



friend monstr & operator ++( monstr &M);
};
monstr& operator ++(monstr &M) {++M.health; return M;}

Agar funksiyaning sinf ichida do’stona sifatida tavsiflanmasa, o’zgaruvchi maydonlarga kirish mavjudligini hisobga olish lozim. Berilgan holda health maydonga tashqaridan kirish yo’q, chunki private spetsifikatori bilan tavsiflangan, shuning uchun uni o’zgartirish uchun mos usuldan foydalanish talab etiladi. monstr sinf tavsifiga change_health usulni kiritamiz, u health maydon qiymatini o’zgartirishga imkon beradi.


void change__health(int he){ health = he;}
U holda inkrement amalini sinfdan tashqarida tavsiflangan odatdagi funksiya yordamida qayta yuklash mumkin:
monstr& operator ++(monstr &М){
int h = M.get__health(); h++;
M.change_health(h);
return М;
}
Postfiks inkrement va dekrement int tipidagi birinchi parametrga ega bo’lishi lozim. U ularni forma perifekatsiyasidan farq qilish uchun qo’llaniladi.
class monstr {

monstr operator ++(int){
monstr M(*this); health++;
return M;
}
};
monstr Vasia;
cout << (Vasia++).get_health();



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   90




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