Mavzu: polimorfizm va uning turlari
public: Hosila11(char * nom):Hosila1(nom){}
Download 44.24 Kb.
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling