Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet123/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   119   120   121   122   123   124   125   126   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Механизм позднего связывания


Äëя êaæäîãî êëañña (íå îáúåêòa!), ñîäåðæaùåãî õîòя áû îäèí âèðòóaëüíûé ìå- òîä, êîìïèëяòîð ñîçäaåò òaáëèöó âèðòóaëüíûõ ìåòîäîâ (vtbl), â êîòîðîé äëя êa- æäîãî âèðòóaëüíîãî ìåòîäa çaïèñaí åãî aäðåñ â ïaìяòè. Àäðåña ìåòîäîâ ñîäåð- æaòñя â òaáëèöå â ïîðяäêå èõ îïèñaíèя â êëaññaõ. Àäðåñ ëþáîãî âèðòóaëüíîãî ìåòîäa èìååò â vtbl îäíî è òî æå ñìåùåíèå äëя êaæäîãî êëañña â ïðåäåëaõ èåðað- õèè.
Êaæäûé îáúåêò ñîäåðæèò ñêðûòîå äîïîëíèòåëüíîå ïîëå ññûënè ía vtbl, íaçûâaå- ìîå vptr. Îíî çaïîëíяåòñя êîíñòðóêòîðîì ïðè ñîçäaíèè îáúåêòa (äëя ýòîãî êîì- ïèëяòîð äîáaâëяåò â ía÷aëî òåëa êîíñòðóêòîða ñîîòâåòñòâóþùèå èíñòðóêöèè).
Ía ýòaïå êîìïèëяöèè ññûëêè ía âèðòóaëüíûå ìåòîäû çaìåíяþòñя ía îáðaùåíèя ê vtbl ÷åðåç vptr îáúåêòa, a ía ýòaïå âûïîëíåíèя â ìîìåíò îáðaùåíèя ê ìåòîäó åãî aäðåñ âûáèðaåòñя èç òaáëèöû. Òaêèì îáðaçîì, âûçîâ âèðòóaëüíîãî ìåòîäa, â îòëè÷èå îò îáû÷íûõ ìåòîäîâ è ôóíêöèé, âûïîëíяåòñя ÷åðåç äîïîëíèòåëüíûé ýòaï ïîëó÷åíèя aäðåña ìåòîäa èç òaáëèöû. Ýòî íåñêîëüêî çaìåäëяåò âûïîëíåíèå ïðîãðaììû.
Ðånîìåíäóåòñя äåëaòü âèðòóaëüíûìè äåñòðónòîðû äëя òîãî, ÷òîáû ãaðaíòèðî- âaòü ïðaâèëüíîå îñâîáîæäåíèå ïaìяòè èç-ïîä äèíaìè÷åñêîãî îáúåêòa, ïîñêîëüêó â ýòîì ñëó÷aå â ëþáîé ìîìåíò âðåìåíè áóäåò âûáðaí äåñòðóêòîð, ñîîòâåòñòâóþ- ùèé ôaêòè÷åñêîìó òèïó îáúåêòa. Äåñòðóêòîð ïåðåäaåò îïåðaöèè delete ðaçìåð îáúåêòa, èìåþùèé òèï size_t. Åñëè óäaëяåìûé îáúåêò яâëяåòñя ïðîèçâîäíûì è â íåì íå îïðåäåëåí âèðòóaëüíûé äåñòðóêòîð, ïåðåäaâaåìûé ðaçìåð îáúåêòa ìî- æåò îêaçaòüñя íåïðaâèëüíûì.
×åòêîãî ïðaâèëa, ïî êîòîðîìó ìåòîä ñëåäóåò äåëaòü âèðòóaëüíûì, íå ñóùåñòâóåò. Ìîæíî òîëüêî äaòü ðåêîìåíäaöèþ îáúяâëяòü âèðòóaëüíûìè ìåòîäû, äëя êîòî- ðûõ åñòü âåðîяòíîñòü, ÷òî îíè áóäóò ïåðåîïðåäåëåíû â ïðîèçâîäíûõ êëaññaõ. Ìåòîäû, êîòîðûå âî âñåé èåðaðõèè îñòaíóòñя íåèçìåííûìè èëè òå, êîòîðûìè ïðîèçâîäíûå êëaññû ïîëüçîâaòüñя íå áóäóò, äåëaòü âèðòóaëüíûìè íåò ñìûñëa. C äðóãîé ñòîðîíû, ïðè ïðîåêòèðîâaíèè èåðaðõèè íå âñåãäa ìîæíî ïðåäñêaçaòü, êaêèì îáðaçîì áóäóò ðañøèðяòüñя áaçîâûå êëaññû (îñîáåííî ïðè ïðîåêòèðîâa- íèè áèáëèîòåê êëaññîâ), a îáúяâëåíèå ìåòîäa âèðòóaëüíûì îáåñïå÷èâaåò ãèá- êîñòü è âîçìîæíîñòü ðañøèðåíèя.
Äëя ïîяñíåíèя ïîñëåäíåãî òåçèña ïðåäñòaâèì ñåáå, ÷òî âûçîâ ìåòîäa draw îñóùå- ñòâëяåòñя èç ìåòîäa ïåðåìåùåíèя îáúåêòa. Åñëè òåêñò ìåòîäa ïåðåìåùåíèя íå çaâèñèò îò òèïa ïåðåìåùaåìîãî îáúåêòa (ïîñêîëüêó ïðèíöèï ïåðåìåùåíèя âñåõ

îáúåêòîâ îäèíaêîâ, a äëя îòðèñîâêè âûçûâaåòñя êîíêðåòíûé ìåòîä), ïåðåîïðåäå- ëяòü ýòîò ìåòîä â ïðîèçâîäíûõ êëaññaõ íåò íåîáõîäèìîñòè, è îí ìîæåò áûòü îïè- ñaí êaê íåâèðòóaëüíûé. Åñëè ìåòîä draw âèðòóaëüíûé, ìåòîä ïåðåìåùåíèя ñìî- æåò áåç ïåðåêîìïèëяöèè ðaáîòaòü ñ îáúåêòaìè ëþáûõ ïðîèçâîäíûõ êëaññîâ — äaæå òåõ, î êîòîðûõ ïðè åãî íaïèñaíèè íè÷åãî èçâåñòíî íå áûëî.


Âèðòóaëüíûé ìåõaíèçì ðaáîòaåò òîëüêî ïðè èñïîëüçîâaíèè óêaçaòåëåé èëè ññû- ëîê ía îáúåêòû. Îáúåêò, îïðåäåëåííûé ÷åðåç óêaçaòåëü èëè ññûëêó è ñîäåðæa- ùèé âèðòóaëüíûå ìåòîäû, íaçûâaåòñя ïîëèìîðôíûì.  äaííîì ñëó÷aå ïîëèìîð- ôèçì ñîñòîèò â òîì, ÷òî ñ ïîìîùüþ îäíîãî è òîãî æå îáðaùåíèя ê ìåòîäó âûïîëíяþòñя ðaçëè÷íûå äåéñòâèя â çaâèñèìîñòè îò òèïa, ía êîòîðûé ññûëaåòñя óêaçaòåëü â êaæäûé ìîìåíò âðåìåíè.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   119   120   121   122   123   124   125   126   ...   232




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish