Mustaqil ishi ma'lumotlar turini o'zgartirish operatorlarini qo'shimcha yuklash



Yüklə 30,7 Kb.
səhifə1/2
tarix27.04.2023
ölçüsü30,7 Kb.
#107222
  1   2
SAMIYEV JAVOHIR PROGRAMMALASH


SHAROF RASHIDOV NOMIDAGI


SAMARQAND DAVLAT UNIVERSITETI
MATEMATIKA FAKULTETI AMALIY MATEMATIKA
YO’NALISHI KECHKI 209-GURUH
TALABASI SAMIYEV JAVOHIRNING PROGRAMMALASH ASOSLARI FANIDAN
MUSTAQIL ISHI

Ma'lumotlar turini o'zgartirish operatorlarini qo'shimcha yuklash


C++ da haddan tashqari yuklangan ma'lumotlar turini o'zgartirish operatorlari
sinfga uni qanday qilib boshqa ma'lumotlar turiga aylantirish kerakligini aniqlash
imkonini beradi. Ma'lumotlar turini o'zgartirish operatorini ortiqcha yuklash uchun
usul nomi sifatida operator kalit so'zidan keyin maqsadli ma'lumotlar turi ishlatiladi.
Masalan, MyClass nomli sinfni int turiga aylantirish uchun biz sinf ichida
quyidagi usulni belgilashimiz mumkin:
class MyClass {
public:
operator int() const {}
};
Bu MyClass misolida int kutilayotgan kontekstlarda, masalan, matematik
hisob-kitoblarda foydalanish imkonini beradi. Shuni ta'kidlash kerakki, ma'lumotlar
turini o'zgartirish operatorlarini haddan tashqari yuklashdan ehtiyotkorlik bilan
foydalanish kerak, chunki bu kutilmagan xatti-harakatlarga olib kelishi va kodni
tushunishni qiyinlashtirishi mumkin.
Dastur orqali misol
#include
using namespace std;
class Fut {
private:
double fut;
public:
Fut(double f) {
fut = f;
}
operator double() const {
return fut / 3.28084;
}
};
int main() {
Fut f(100.0);
double metr = f;
cout << "100 fut " << metr << " metrga teng." << endl;
return 0;
}
Dastur natijasi
100 fut 30.48 metrga teng.

Ajdod sinf metodlarini qayta aniqlash
Obyektga yo'naltirilgan dasturlashda siz ajdod sinflaridan birida allaqachon
aniqlangan pastki sinfdagi usulni qayta belgilashingiz mumkin. Ushbu jarayon
usulni bekor qilish deb ataladi. Bu quyi sinfga oʻziga xos usulni amalga oshirish
imkonini beradi, bu esa quyi sinfning xatti-harakatlariga xos boʻlishi mumkin.
Usulni bekor qilish uchun bola sinfidagi usul ota-sinfdagi usul bilan bir xil
imzoga (nom va parametr turlari) ega bo'lishi kerak. Bola sinfidagi usul uchun kirish
spetsifikatori ota-sinfdagi usul uchun kirish spetsifikatoriga qaraganda bir xil yoki
ko'proq ruxsat beruvchi bo'lishi kerak.
Dastur orqali misol
#include
using namespace std;
class Hayvon {
public:
virtual void hayvonovozi() {
cout << "Hayvon nomi va ovozi quyidagicha: " << endl;
}
};
100 fut 30.48 metrga teng.
class It : public Hayvon {
public:
void hayvonovozi() override {
cout << "Bu it va uning ovozi vovf" << endl;
}
};
int main()
{
Hayvon ovoz;
ovoz.hayvonovozi();
It kuchuk;
kuchuk.hayvonovozi();
return 0;
}
Dastur natijasi
Hayvon nomi va ovozi quyidagicha:
Bu it va uning ovozi vovf

Yuqoridagi dasturda Hayvon{} sinfidagi hayvonovozi() funksiyasi virtualdir,


bu uni It{} sinfida bekor qilishga imkon beradi. It{} sinfidagi override kalit so' zi ota
sinfdagi usulni bekor qilishini bildiradi. hayvonovozi() funksiyasi It misolida
chaqirilganda, u Hayvon{} sinfidagi kodni emas balki It{} sinfidagi kodni bajaradi.

Yüklə 30,7 Kb.

Dostları ilə paylaş:
  1   2




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə