• D::Y::X::f() yoki D::Z::X::f() . D
  • Ko’plikdagi vorislik va virtual sinflar




    Download 5,48 Mb.
    Pdf ko'rish
    bet24/53
    Sana21.11.2023
    Hajmi5,48 Mb.
    #102807
    1   ...   20   21   22   23   24   25   26   27   ...   53
    Bog'liq
    Texnologiyalari va kommunikatsiyalarni rivojlantirish vazirligi

    Ko’plikdagi vorislik va virtual sinflar 
    Bu sinf ketma-ket(to’g’ri-to’g’ri) baza sinfi, agar u sinflarni aniqlashda baza 
    ro’yxatidan chiqadi.Agar ba’zi hollarda A sinf V sinfning bazasini ifodalasa va S 
    uchun V baza bor, unda V sinf S uchun to’g’ridan-to’g’ri bazasi hisoblanadi, A sinf 
    esa S sinf uchun to’g’ri bo’lmagan baza bo’lib g’isoblanadi. xa komponentiga 
    murojat qilganda A sinfga kiruvchi va V va S sinflarga izchil tarzida voris bo’ladi,S 
    sinfga A::xa tarzida, V::xa tarzida e’lon qilish mumkin. Ikkala konstruktsiya A 
    sinfning elementi xa ga murojat qilishni ta’minlaydi. Pastda sinflarni tasvirlashda 
    qabul qilingan bazalar ishlab chiqilgan. Xuddi shu tartibda ularni kompilyator e’lon 
    qilishini ko’ramiz va ularni matni dasturda joylashadi. 
    Sinflar bir nechta ketma-ket sinflardan tashkil topishi mumkin, sinf bazasida 
    ixtiyoriy son yo’qolishi mumkin, misol uchun, 
    class X1 { ... }; 
    class X2 { ... }; 
    class X3 { ... }; 
    class Y1: public X1, public X2, public X3 { ... }; 
    Bir necha to’g’ri baza sinflari mavjud bo’lib, ular ko’plik vorislari deb 
    nomlanadi. 
    Ko’plik vorislarida ketma-ket bazada hech qanday sinf bittadan ortiq ishlatilishi 
    mumkin emas. Bitta sinf to’g’ri bo’lmagan sinfda bir necha marta ishlatilishi 
    mumkin: 
    class X { ...; f () ; ... }; 
    class Y: public X { ... }; 
    class Z: public X { ... }; 
    class D: public Y, public Z { ... }; 


    45 
    Bu misolda X sinf D sinfning ikki marta o’rtacha vorisi bo’ladi. Bizning 
    misolimizda ikkita qiymati qatnashadi, va shuning uchun bir qiymatli bo’lmagan D 
    sinfning obyekti X sinfning aniq komponentiga murojat qulayligini bartaraf qilish 
    kerak, uni to’liq kvalifikatsiyasi D::Y::X::f() yoki D::Z::X::f()sinfning obyekti 
    ichida sodda ko’rinish Y::X::f() yoki Z::X::f(), lekin bu ham kvalifikatsiyani 
    mazmunidir. 
    Bir xil nomdagi obyektlarni bartaraf qilishda to’g’ri bo’lmagan sinf bazalari 
    ko’plik vorislari, bu sinf bazalari virtual deb e’lon qilinadi. Buning uchun sinf 
    bazalari ro’yxatida oldingi sinf nomini virtual kalit so’zini ishlatish kerak. Misol 
    uchun X sinfi virtual baza sinfi bo’la oladi bunaqa ko’rinishda yozilganda: 

    Download 5,48 Mb.
    1   ...   20   21   22   23   24   25   26   27   ...   53




    Download 5,48 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Ko’plikdagi vorislik va virtual sinflar

    Download 5,48 Mb.
    Pdf ko'rish