Mavzu: polimorfizm va uning turlari


public:  Hosila11(char * nom):Hosila1(nom){}


Download 44.24 Kb.
bet5/7
Sana03.06.2024
Hajmi44.24 Kb.
#1855802
1   2   3   4   5   6   7
Bog'liq
13 – ma’ruza mavzu polimorfizm va uning turlari. Virtual funksi-fayllar.org

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 44.24 Kb.

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




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