#include
class Tayanch
{
public:
Tayanch(){};
// Соф виртуал деструктор
virtual ~Tayanch()=0;
};
// Деструкторни аниқлаш
Tayanch::~Tayanch(){}
class Hosila: public Tayanch
{
public:
Hosila(){};
~Hosila(){};
};
void main()
{
Hosila * pHosila = new Hosila;
delete pHosila;
}
Маълумки, деструктор виртуал бўлганда, олдин ҳосилавий синф деструктори, кейин таянч синф деструктори бажарилади. Соф виртуал деструкторининг айнан таянч синфда аниқланиши, унинг қандайдир амалга оширилган вариантини яратадики, у деструкторлар кетма-кетлигини тўғри бажарилишини таъминлайди.
Хулоса сифатида абстракт синфларга қўлланиладиган қоидаларни келтирамиз:
абстракт синфни функцияга узатиладиган аргументнинг тури сифатида ишлатиб бўлмайди;
абстракт синфни функция қайтарадиган қийматнинг тури сифатида ишлатиб бўлмайди;
объект турини ошкор равишда абстракт синф турига келтириш мумкин эмас;
абстракт синф объектини яратиб бўлмайди;
абстракт синфга кўрсаткич ёки мурожаатни эълон қилиш мумкин.
17-боб. Истисно ҳолатлар ва бажарилиш вақти тури ҳақидаги маълумотлар
Истисно ҳолатларни қайта ишлаш
Истисно – бу кутилмаган ёки программанинг нормал бажарили-шини узадиган ҳолатдир. С++ тилида истисно ҳолатни қайта ишлашнинг якуний модел деб номланувчи варианти амалга оширилган: истисно ҳолат рўй бериб у қайта ишлангандан кейин бошқарув истисно рўй берган кодга қайтиб келмайди, яъни программани айнан узилиш рўй берган жойдан давом этиши таъминланмайди. Иккинчи томондан, С++ тилида аппарат қурилмалардан келадиган истистнолар (узилишлар) қайта ишланмайди, фақат қандайдир функция томонидан юзага келтирилган истиснолар қайта ишланади. Истисноларни бошқариш учун С++ тилида учта калит сўз ишлатилади: try, catch ва throw.
Истисно ҳолатни юзага келтириши мумкин бўлган код блоки try калит сўзи билан белгиланади. Бу блок фигурали қавсга олинади ва ҳимояланган ёки try-блок дейилади:
try
Do'stlaringiz bilan baham: |