13 – ma’ruza mavzu: polimorfizm va uning turlari. Virtual funksiya. Abstrakt sinf va funksiyalar


Download 378.34 Kb.
Pdf ko'rish
bet5/8
Sana15.12.2022
Hajmi378.34 Kb.
#1007526
1   2   3   4   5   6   7   8
Bog'liq
9y9byPXmkU5D8noFIWuv6TGva5udl9pc4QtcMYrC

class Hosila1: public Tayanch 

 public: 
Hosila1(char * nom):Tayanch(nom){} 
void Fun(const char * s){cout<
qabul qildi.\n";} 
void Fun(int n){cout<
qildi.\n";} 
virtual void Fun(char c) 

cout<<"Virtual "<

}; 
class Hosila11: public Hosila1 



 public: 
Hosila11(char * nom):Hosila1(nom){} 
void Fun(const char * s){cout<
qabul qildi.\n";} 
void Fun(double d){cout<
qildi.\n";} 
virtual void Fun(char c) 

cout<<"Virtual "<

}; 
int main() 

 Tayanch tayanch("Tayanch"); 
 Hosila1 hosila1("Hosila1"); 
 Hosila11 hosila11("Hosila11"); 
 tayanch.Fun('X'); 
 hosila1.Fun('Y'); 
 hosila1.Fun(10); 
 hosila1.Fun("Hos1"); 
 hosila11.Fun('Z'); 
 hosila11.Fun(10.1234); 
 hosila11.Fun("Hos11"); 


 return 0; 

Dastur bajarilgandan keyin ekranda quyidagi satrlar paydo bo‘ladi: 
Virtual Tayanch::Fun X parametrini qabul qildi. 
Virtual Hosila1::Fun Y parametrini qabul qildi. 
Hosila1::Fun 10 parametrini qabul qildi. 
Hosila1::Fun Hos1 parametrini qabul qildi. 
Virtual Hosila11::Fun Z parametrini qabul qildi. 
Hosila11::Fun 10.1234 parametrini qabul qildi. 
Hosila11::Fun Hos11 parametrini qabul qildi. 
Keltirilgan misolda chiziqli vorislikni hosil qiluvchi uchta sinf aniqlangan. 
Tayanch sinfida Fun(char) virtual funksiya e’lon qilingan. Hosila1 sinfi Fun(char) 
virtual funksiyasining o‘z variantini va ikkita qayta yuklanuvchi novirtual Fun(const 
char*) va Fun(int) funksiyalarni e’lon qilgan. O‘z navbatida, Hosila11 sinfi 
Fun(char) virtual funksiyasining o‘z variantini va ikkita qayta yuklanuvchi novirtual 
Fun(const char*) va Fun(double) funksiyalarni e’lon qilgan. Garchi, Fun(const 
char*) funksiyasi Hosila1 sinfidagi analogi bilan to‘la ustma-ust tushsa ham, u 
Hosila11 sinfida qayta e’lon qilingan. Chunki, Hosila1 sinfida xuddi shu nomdagi 
virtual va novirtual funksiyalar mavjudligi sababli, Fun(const char*) funksiyasi 
yashiringan bo‘ladi. Xuddi shunday, Fun(char) virtual funksiyasi Hosila1 va 
Hosila11 sinflarida qaytadan e’lon qilishga to‘g‘ri keladi, chunki ular ham sinflarda 
xuddi shu nomdagi qayta yuklanuvchi funksiyalarni mavjudligi sababli yashiringan 
bo‘ladi. 
Agar voris sinflardagi virtual funksiyalar e’lonlari o‘chirilsa, funksiyaning 
belgi argumentli chaqirishda, amalda Hosila1 sinfidigi Fun(int) funksiyasini 
chaqirish ro‘y beradi. Tayanch sinfidagi virtual funksiyani chaqirish zarur bo‘lsa, 
ko‘rish sohasiga ruxsat berish amalidan foydalanish mumkin: 


Hosila1.Tayanch::Fun(‘Y’); 

Download 378.34 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




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