Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet59/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   55   56   57   58   59   60   61   62   ...   71
Bog'liq
С ОЙП

{
int * px;
public:
Tayanch(int _x)
{
px=new int;
*px=_x;
}
\\ virtual ~Tayanch()
~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;
}
Ҳосилавий синф – Hosila синфида деструктор виртуал деб эълон қилинмаган ва
delete pTayanch;
тил кўрсатмаси бажарилиши натижасида экранга
Tayanch sinf destruktori ishladi!
хабари чиқади. Бу ҳолат хотирадаги Hosila синф объекти учун ажратилган хотира бўшатилмаганлигини билдиради. Агар таянч синф деструкторини virtual деб эълон қилинса, объектни ўчириш тўғри рўй беради – олдин ҳосилавий синф деструктори, кейин таянч синф деструктори бажарилади. Программанинг экранга чиқарган
Hosila sinf destruktori ishladi!
Tayanch sinf destruktori ishladi!
хабарлари буни исботлайди.
Абстракт синфлар ва соф виртуал функциялар
Синфлар, шу турга тегишли бўлган объектларни ўзаро бажарадиган амаллар қоидасини олдиндан аниқлаб бериш учун яратилиши мумкин. Бундай синфларга абстракт синфлар дейилади. Абстракт синфларнинг объектларини яратиб бўлмайди. Улар фақат ҳосилавий синфларни яратиш учун хизмат қилади.
Абстракт синф камида битта виртуал функцияга эга бўлиши керак. Таянч синфнинг соф виртуал функциялари ҳосилавий синфларда албатта аниқланиши керак, акс ҳолда ҳосилавий синф ҳам виртуал ҳисобланади.
Соф виртуал функция қуйидаги синтаксис билан эълон қилинади:
virtual <функция номи>(<параметрлар рўйхати>)=0;
Мисол кўрайлик. Фараз қилайлик, синфлар шажарисини яратиш зарур бўлсин ва таянч синф умумий функционал имкониятларни таъминлаши керак. Лекин, таянч синфи шу даражада умумийлаш бўлиши мумкинки, ундаги функцияларни конкретлаштиришни имкони йўқ. Бундай таянч синфи абстракт синф учун энг яхши номзод ҳисобланади:
Мисол учун жониворлар шажарасини тавсифловчи Jonivor абстракт таянч синф ва унинг ворислари Kuchuk ва Mushuk синфларини эълон қилишни кўрайлик.

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   71




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