13 – ma’ruza mavzu: polimorfizm va uning turlari. Virtual funksiya. Abstrakt sinf va funksiyalar
Download 378.34 Kb. Pdf ko'rish
|
9y9byPXmkU5D8noFIWuv6TGva5udl9pc4QtcMYrC
Virtual destruktorlar
Konstruktorlar virtual bo‘lmaydi, lekin destruktorlar virtual bo‘lishi mumkin va aksariyat holatlarda shunday bo‘ladi. Tayanch sinfiga ko‘rsatkich hosilaviy sinf obyektiga ko‘rsatib turganda, agar destruktor virtual qilib e’lon qilingan bo‘lsa, hosilaviy sinf destruktori chaqiriladi. Hosilaviy sinf destruktori o‘z navbatida tayanch sinf destruktorini chaqiradi va obyekt to‘g‘ri (to‘laligicha) o‘chiriladi. Aks holda ko‘rsatkich turiga mos ravishda tayanch sinf destruktori chaqiriladi, hosilaviy sinf uchun ajratilgan xotira bo‘shatilmay qoladi - xotirada band qilingan, lekin qayta ishlatish imkoni bo‘lmagan xotira bo‘lagi - “xotira axlati” paydo bo‘ladi. Misol ko‘raylik: #include class Tayanch { int * px; public: Tayanch(int _x) {px=new int; *px=_x; } /*virtual*/~Tayanch() { cout<<"Tayanch sinf destruktori ishladi!\n"; delete px; } }; class Hosila: public Tayanch { int * pxx; public: Hosila (int n):Tayanch(n) { pxx=new int; *pxx=n*n; } ~Hosila() { cout<<"Hosila sinf destruktori ishladi!\n"; delete pxx; } }; int main() { Tayanch * pTayanch=new Hosila(5); delete pTayanch; return 0; } Hosilaviy sinf - Hosila sinfida destruktor virtual deb e’lon qilinmagan va delete pTayanch; til ko‘rsatmasi bajarilishi natijasida ekranga Tayanch sinf destruktori ishladi! xabari chiqadi. Bu holat xotiradagi Hosila sinf obyekti uchun ajratilgan xotira bo‘shatilmay qolganligini bildiradi. Agar tayanch sinf destruktorini virtual deb e’lon qilinsa, obyektni o‘chirish to‘g‘ri ro‘y beradi - oldin hosilaviy sinf destruktori, keyin tayanch sinf destruktori bajariladi. Dasturning ekranga chiqaradigan Hosila sinf destruktori ishladi! Tayanch sinf destruktori ishladi! xabarlari buni isbotlaydi. Download 378.34 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling