#include
class Tayanch
{
public:
Tayanch(){};
virtual ~Tayanch()=0; // Sof virtual destruktor
};
Tayanch::~Tayanch(){} // Destruktorni aniqlash
class Hosila: public Tayanch
{
public:
Hosila(){};
~Hosila(){};
};
void main()
{
Hosila * pHosila = new Hosila;
delete pHosila;
}
Ma’lumki, destruktor virtual bo‘lganda, oldin hosilaviy sinf destruktori, keyin tayanch sinf destruktori bajariladi. Sof virtual destruktorining aynan tayanch sinfda aniqlanishi, uning qandaydir amalga oshirilgan variantini yaratadiki, u destruktorlar ketma-ketligini to‘g‘ri bajarilishini ta’minlaydi.
Xulosa sifatida abstrakt sinflarga qo‘llaniladigan qoidalarni keltiramiz:
abstrakt sinfni funksiyaga uzatiladigan argumentning turi sifatida ishlatib bo‘lmaydi;
abstrakt sinfni funksiya qaytaradigan qiymatning turi sifatida ishlatib bo‘lmaydi;
obyekt turini oshkor ravishda abstrakt sinf turiga keltirish mumkin emas;
abstrakt sinf obyektini yaratib bo‘lmaydi;
abstrakt sinfga ko‘rsatkich yoki adres olish amalini e’lon qilish mumkin.
Do'stlaringiz bilan baham: |