13 – ma’ruza mavzu: polimorfizm va uning turlari. Virtual funksiya. Abstrakt sinf va funksiyalar


Download 378.34 Kb.
Pdf ko'rish
bet7/8
Sana15.12.2022
Hajmi378.34 Kb.
#1007526
1   2   3   4   5   6   7   8
Bog'liq
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:
1   2   3   4   5   6   7   8




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