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



Download 2 Mb.
bet138/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   134   135   136   137   138   139   140   141   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Операция const_cast


Îïåðaöèя ñëóæèò äëя óäaëåíèя ìîäèôèêaòîða COnst. Êaê ïðaâèëî, îía èñïîëüçó- åòñя ïðè ïåðåäa÷å â ôóíêöèþ êîíñòaíòíîãî óêaçaòåëя ía ìåñòî ôîðìaëüíîãî ïa- ðaìåòða, íå èìåþùåãî ìîäèôèêaòîða COnst. Ôîðìaò îïåðaöèè:
const_cast <òèï> (âûðaæåíèå)
Îáîçía÷åííûé òèï äîëæåí áûòü òaêèì æå, êaê è òèï âûðaæåíèя, ça èñêëþ÷åíèåì ìîäèôèêaòîða COnst. Îáû÷íî ýòî óêaçaòåëü. Îïåðaöèя ôîðìèðóåò ðåçóëüòaò óêa- çaííîãî òèïa.
Íåîáõîäèìîñòü ââåäåíèя ýòîé îïåðaöèè îáóñëîâëåía òåì, ÷òî ïðîãðaììèñò, ðåa- ëèçóþùèé ôóíêöèþ, íå îáяçaí îïèñûâaòü íå èçìåíяåìûå â íåé ôîðìaëüíûå ïa- ðaìåòðû êaê COnst, õîòя ýòî è ðåêîìåíäóåòñя. Ïðaâèëa C++ çaïðåùaþò ïåðåäa÷ó êîíñòaíòíîãî óêaçaòåëя ía ìåñòî îáû÷íîãî. Îïåðaöèя COnst_Cast ââåäåía äëя òîãî, ÷òîáû îáîéòè ýòî îãðaíè÷åíèå. Åñòåñòâåííî, ôóíêöèя íå äîëæía ïûòaòüñя èçìåíèòü çía÷åíèå, ía êîòîðîå ññûëaåòñя ïåðåäaâaåìûé óêaçaòåëü, èía÷å ðåçóëü- òaò âûïîëíåíèя ïðîãðaììû íå îïðåäåëåí.
Ïðèìåð:
vOid print(int *p){ // Ôóíêöèя íå èçìåíяåò çía÷åíèå *p COut << *p;
}
COnst int *p;

/* print(&p); Îøèáêa, ïîñêîëüêó p îáúяâëåí êaê óêaçaòåëü ía êîíñòaíòó */
Îïåðaöèя COnst_Cast èñïîëüçóåòñя â òîì ñëó÷aå, êîãäa ïðîãðaììèñò óâåðåí, ÷òî â òåëå ôóíêöèè çía÷åíèå, ía êîòîðîå ññûëaåòñя óêaçaòåëü, íå èçìåíяåòñя. Åñòåñò- âåííî, åñëè åñòü âîçìîæíîñòü äîáaâèòü ê îïèñaíèþ ôîðìaëüíîãî ïaðaìåòða ìî- äèôèêaòîð COnst, ýòî ïðåäïî÷òèòåëüíåå èñïîëüçîâaíèя ïðåîáðaçîâaíèя òèïa ïðè âûçîâå ôóíêöèè.


Операция dynamic_cast


Îïåðaöèя ïðèìåíяåòñя äëя ïðåîáðaçîâaíèя óêaçaòåëåé ðîäñòâåííûõ êëaññîâ èå- ðaðõèè, â îñíîâíîì — óêaçaòåëя áaçîâîãî êëañña â óêaçaòåëü ía ïðîèçâîäíûé

êëaññ, ïðè ýòîì âî âðåìя âûïîëíåíèя ïðîãðaììû ïðîèçâîäèòñя ïðîâåðêa äîïóñ- òèìîñòè ïðåîáðaçîâaíèя.


Ôîðìaò îïåðaöèè:
dynamic_cast <òèï *> (âûðaæåíèå)
Âûðazåíèå äîëæíî áûòü óêaçaòåëåì èëè ññûëêîé ía êëaññ, òèï — áaçîâûì èëè ïðî- èçâîäíûì äëя ýòîãî êëañña. Ïîñëå ïðîâåðêè äîïóñòèìîñòè ïðåîáðaçîâaíèя â ñëó-
÷aå óñïåøíîãî âûïîëíåíèя îïåðaöèя ôîðìèðóåò ðåçóëüòaò çaäaííîãî òèïa, â ïðîòèâíîì ñëó÷aå äëя óêaçaòåëя ðåçóëüòaò ðaâåí íóëþ1, a äëя ññûëêè ïîðîæäa- åòñя èñêëþ÷åíèå bad_Cast. Åñëè çaäaííûé òèï è òèï âûðaæåíèя íå îòíîñяòñя ê îäíîé èåðaðõèè, ïðåîáðaçîâaíèå íå äîïóñêaåòñя.
Ïðåîáðaçîâaíèå èç áaçîâîãî êëañña â ïðîèçâîäíûé íaçûâaþò ïîíèxaþùèì (downcast), òaê êaê ãðaôè÷åñêè â èåðaðõèè íañëåäîâaíèя ïðèíяòî èçîáðaæaòü ïðîèçâîäíûå êëaññû íèæå áaçîâûõ. Ïðèâåäåíèå èç ïðîèçâîäíîãî êëañña â áaçî- âûé íaçûâaþò ïîâûøaþùèì (upcast), a ïðèâåäåíèå ìåæäó ïðîèçâîäíûìè êëañña- ìè îäíîãî áaçîâîãî èëè, íaîáîðîò, ìåæäó áaçîâûìè êëaññaìè îäíîãî ïðîèçâîä- íîãî — ïåðånðåñòíûì (crosscast).



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   134   135   136   137   138   139   140   141   ...   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