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


Tipga keltirish amalini qayta yuklash



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

Tipga keltirish amalini qayta yuklash

Sinf obyektini boshqa tipga almashtirishni bajargan funksiya-amallarni aniqlash mumkin. Format:


operator yangi_tipdagi_nom ();
Qaytaruvchi qiymat tipi va parametrlarni ko’rsatish talab qilinmaydi. Tipni almashtirishning virtual funksiyalarini aniqlash mumkin.
Misol:
monstr::operator int(){return health;}

monstr Vasia; cout << int(Vasia);


Funksiya chaqirish amalini qayta yuklash

Funksiyani chaqirish amali aniqlangan oshkor funksional sinf deb ataladi. Bunday sinfdan boshqa maydonlar va usullar bo’lishi talab etilmaydi:


class if_greater{


public:
int operator () (int a, int b) const {
return a > b;
}
};

Bunday sinfdan foydalanish o’ziga xos sintaksisga ega. Misol qaraymiz:


if_greater х;


cout << х(1, 5) << endl; // Natija - 0
cout << if_greater() (5, 1) << endl; // Natija - 1

if_greater sinfida ikki parametrli funksiyani chaqirish amali aniqlangani uchun x(1, 5) ifodasi mumkin (uni x.operater()(5, 1) ko’rinishda ham yozish mumkin). Misoldan ko’rinadiki, funksional sinf obyekti, agar u funksiya bo’lgandagi kabi foydalaniladi.


Ikkinchi chiqarish operatorida if_greater() ifoda if_greater sinfning jimlik bo’yicha konstruktorini chaqirish uchun qo’llaniladi. Bu ifodaning bajarish natijasi if_greater sinfi obyekti hisoblanadi. Keyin oldingi holdagi kabi bu obyekt uchun doiraviy qavslarda yozilgan ikki argumentli funksiya chaqiriladi.
( ) operatsiyani faqat sinf usuli kabi aniqlash mumkin.Turli sondagi argumentni qayta yuklangan chaqirish funksiyasi amallarini aniqlash mumkin. Funksional obyektlar C++ standart kutubxonasida keng qo’llaniladi.


Indekslashtirish amalini qayta yuklash

[ ] indekslashtirish amali odatda sinf tipi indekslash ma’noga ega qiymatlar to’plamidan iborat bo’lganda qayta yuklanadi. Indekslash amali to’plamdagi elementga murojaatni qaytarishi lozim. Buni butun sonlar massivini saqlash va ular bilan xavfsiz ishlash uchun mo’ljallangan Vect sinfi misolida ko’rsatamiz:


#inclucle


#include
class Vect{
public:
explicit Vect(int n = 10);
Vect(const int a[], int n); // massiv bilan initsializatsiyalash
~Vect() { delete [] p; }
int& operator [] (int i);
void Print()

private:
int* p;
int size;
};
Vect::Vect(int n) : size(n){
p = new int[size];
}
Vect::Vect(const int a[], int n) : size(n){
p = new int[size];
for (int i = 0; i < size; i++) p[i] = a[i];
}
// Indekslash amalini qayta yuklash:
int& Vect::operator [] (int i){
if (i < 0 || i >= size){
cout << “Noto’g’ri indeks (i = ” << i << “)” << endl;
cout << “Dasturning tugashi” << endl;
exit(0):
}
return p[i];
}
void Vect::Print(){
for (int i = 0; i < size; i++)
cout << p[i] << " ";
cout << endl;
}
int ma1n(){
int аrr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Vect а(аrr, 10);
a.Print();
cout << a[5] << endl;
cout << a[12] << endl;
return 0;
}
Dastur ishi natijasi:
1 2 3 4 5 6 7 8 9 10
6
Noto’g’ri indeks (1 = 12)
Dasturning tugashi

Indekslash qayta yuklangan amali butun argument oladi va uning qiymati massiv diapazoni chegaralariga tegishli bo’lishini tekshiradi. Agar ha bo’lsa, u holda element manzili qaytariladi, bu indekslash standart operatsiyasi semantikasiga mos keladi.


Bu misolda jimlik bo’yicha parametrli konstruktor explicit kabi e’lon qilingan, u oshkora chaqirilmaydigan tipni almashtirish konstruktori hisoblanmasligi uchun shunday qilingan. explicit tayanch so’zi bu konstruktor faqat oshkora chaqirilishini ko’rsatadi.
[ ] amalni faqat sinf usuli kabi aniqlash mumkin.



Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   61   62   63   64   65   66   67   68   ...   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