Raqamli texnologiyalar fakulteti dasturiy injiniring yo’nalishi



Download 1,57 Mb.
bet43/81
Sana23.06.2022
Hajmi1,57 Mb.
#695199
1   ...   39   40   41   42   43   44   45   46   ...   81
Bog'liq
Dasturiy injiniring Dasturlash 2-4

Amallarni qayta yuklash. Sinflarda shablonlarni ishlatish haqida gapirishdan oldin, amallarni qayta yuklash haqida to’xtalib o’tmasdan iloji yo’q.
Amallarni qayta yuklaganda, quyidagi cheklovlarni hisobga olish kerak:
1. Quyidagi amallarni qayta yuklash taqiqlanadi:
sizeof() – argument o’lchamini aniqlash;
. (nuqta) – obyekt komponentlarini tanlash;
?: – shart amali;
:: – ko’rinish sohasini aniqlash;
.* - ko'rsatkich orqali sinf komponentini tanlash;
# va ## - preprotsessor amallari.

2. Amallarni faqat yangi ma'lumotlar turi uchun qayta yuklash mumkin - siz o'rnatilgan turdagi operatsiyani qayta yuklay olmaysiz. C++ da enum, union, struct va class konstruksiyalari yordamida yangi turdagi ma’lumotlar shakllanishi mumkin.


3. Qayta yuklangan amalning ustuvorligini va operandlar sonini o'zgartirish mumkin emas. Birlik operatsiya bitta operand, binar - ikkita operandga ega bo'lishi kerak; standart parametrlarga ruxsat berilmaydi. Operandlarning aniq soniga ega bo'lmagan yagona operatsiya bu funksiyani chaqirish operatsiyasi (). "+", "-", "*", "&" operatsiyalari ham unar, ham binary sifatida qayta yuklanishi mumkin.
4. Amallarni mustaqil tashqi funksiyalar sifatida (faqat bu qayta yuklash usuli enum uchun ruxsat etiladi) yoki sinf usullari sifatida qayta yuklanishi mumkin.
To'rtta amal:
- o’zlashtirish
- funksiyani chaqirish ();
- indekslash [];
- ko'rsatkich orqali kirish ->;
faqat sinf metodlari sifatida qayta yuklanishi mumkin. Asosan, bu amallarni enum konstruktsiyasi uchun qayta yuklash mumkin emas.
5. Agar amal sinf metodi sifatida qayta yuklangan bo'lsa, u holda chap (yoki faqat) argument majburiy ravishda amal qayta yuklangan sinf obyekti bo'ladi.
Sinf metodlar bilan qayta yuklash amallari. Metodlar bitta parametrga ega – joriy obyekt jimlik bo'yicha aniqlanadi. Yagona argument bo'lgan joriy obyektda unar amallar bajariladi. Shuning uchun, sinf metodlari sifatida qayta yuklangan binar amallar parametrlarga ega emas. Sinf metodi sifatida amalga oshirilgan unar amal prototipi quyidagicha bo’ladi:


operator@() turi;

Bu yerda @ - amal belgisi. Qaytish qiymati har qanday turdagi bo'lishi mumkin, shu jumladan aniqlanayotgan sinf ko’rinishda ham. Amaliyot obyektga qiymat, mos yozuvlar yoki ko'rsatkichni qaytarishi mumkin. Qaytish turi o'rniga voidni belgilashga ruxsat beriladi.


Postfiksni inkrement va decrement amallari bu qoidadan istisno hisoblanadi. Postfiks amalini prefiks amalidan farqlash uchun postfiks shaklida int tipidagi fiksirlangan parametr ko'rsatilgan, u aslida ishlatilmaydi.
Inkrement (va dekrement) prefiks shakli prototipga ega bo'lishi kerak


tip& operator@();

Postfiksni inkrement (va dekrement) amali prototipga ega bo'lishi kerak




tip operator@(int);

tip – bu "sinf_nomi" bo'lib, unda amal aniqlanadi.


Binar amal prototipi bitta argumentga ega va quyidagicha ko’rinishda bo’ladi:




tip operator@(parametr);

Parametrlarni biz uchun qulay bo'lgan har qanday usulda o'tkazishga ruxsat beriladi: qiymat bo'yicha, mos yozuvlar yoki ko'rsatkich bo'yicha. Metod-amal, shuningdek, o'z sinfini o'z ichiga olgan obyektga qiymat, ko'rsatkich yoki havolani qaytarishi mumkin. Qaytish turi o'rniga voidni belgilashga ruxsat beriladi.


Sinfdan tashqari metod-amalni amalga oshirishda, sarlavhada sinfning prefiks nomini odatdagi tarzda ko'rsatish talab qilinadi:


tip sinf::operator@() // unar amal
tip sinf::operator@(parametr) // binary amal

Obyekt uchun unar amal chaqiruvi quyidagi shaklga ega




@obyekt
obyekt@

qanday operatsiya qo'llanilishiga qarab - prefiks yoki postfiks. Prefiks operatsiyasi uchun funksiya chaqiruvi quyidagi shaklga ega




obyekt.operator@()

Murojaatning funksional shaklida postfiks amali uchun siz fiksirlangan argumentni ko'rsatishingiz kerak:




obyekt.operator@(0)

Sinf usuli sifatida belgilangan ikkilik operatsiyani chaqirishning funksional shakli quyidagicha ko'rinishda bo’ladi:




obyekt.operator@(argument)

Infix shakli




obyekt@argument

funktsional so'zining qisqartmasi.


Ta’minlash amallari binar amallardir, shuning uchun ular bitta argumentni olishlari kerak. Agar ta’minlash operatori = aniq amalga oshirilmagan bo'lsa, u avtomatik ravishda jimlik bo'yicha yaratiladi. Har qanday sinf uchun avtomatik ravishda yaratilgan ta’minlash amali prototipiga ega


sinf& operator = (const class &r)

O'z sinfingizga tegishli bo'lmagan parametr va qaytarish natijasi bilan ta’minlash amalini amalga oshirishga ruxsat beriladi; parametrni har qanday usulda o'tkazishga ruxsat beriladi; Siz havolani emas, balki qiymat yoki ko'rsatkichni qaytarishingiz mumkin - barchasi masalaning ehtiyojlariga bog'liq.


Boshqa ta’minlash amallari avtomatik ravishda yaratilmaydi. Ta’minlash funktsiyalari odatda joriy obyektga havolani qaytarishi kerak. const bo'lmagan havolani qaytaradigan har qanday metod qayta ishlatilishi mumkin.
Money& Money:: operator += (const Money & b)

Qayta foydalanish, masalan, doimiy havolani qaytarish orqali aniq taqiqlanishi mumkin




const Money & Money :: operator + = (const; Money & b)

const modifikatori natijani keyingi o'zgartirishga ruxsat bermaydi.



Download 1,57 Mb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   81




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