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’);
Do'stlaringiz bilan baham: