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



Download 2 Mb.
bet117/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   113   114   115   116   117   118   119   120   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Указатели на элементы классов


Ê ýëåìåíòaì êëaññîâ ìîæíî îáðaùaòüñя ñ ïîìîùüþ óêaçaòåëåé. Äëя ýòîãî îïðå- äåëåíû îïåðaöèè .* è ->*. Óêaçaòåëè ía ïîëя è ìåòîäû êëañña îïðåäåëяþòñя ïî-ðaçíîìó.
Ôîðìaò ónaçaòåëя ía ìåòîä nëañña:
âîçâð_òèï (èìя_êëañña::*èìя_óêaçaòåëя)(ïaðaìåòðû);
Íaïðèìåð, îïèñaíèå óêaçaòåëя ía ìåòîäû êëañña mOnstr int get_health() {return health;}
int get_ammO() {return ammO;}
(a òaêæå ía äðóãèå ìåòîäû ýòîãî êëañña ñ òaêîé æå ñèãíaòóðîé) áóäåò èìåòü âèä:
int (mOnstr:: *pget)();
Òaêîé óêaçaòåëü ìîæíî çaäaâaòü â êa÷åñòâå ïaðaìåòða ôóíêöèè. Ýòî äaåò âîç- ìîæíîñòü ïåðåäaâaòü â ôóíêöèþ èìя ìåòîäa:
vOid fun(int (mOnstr:: *pget)()){
(*this.*pget)(); // Âûçîâ ôóíêöèè ÷åðåç îïåðaöèþ .* (this->*pget)(); // Âûçîâ ôóíêöèè ÷åðåç îïåðaöèþ ->*
}
Ìîæíî íañòðîèòü óêaçaòåëü ía êîíêðåòíûé ìåòîä ñ ïîìîùüþ îïåðaöèè âçяòèя aäðåña:

// Ïðèñâaèâaíèå çía÷åíèя óêaçaòåëþ:


pget = & mOnstr::get_health; mOnstr Vasia, *p;
p = new mOnstr;
// Âûçîâ ôóíêöèè ÷åðåç îïåðaöèþ .* :
int Vasin_health = (Vasia.*pget)();
// Âûçîâ ôóíêöèè ÷åðåç îïåðaöèþ ->* :
int p_health = (p->*pget)();
Íèæå ïåðå÷èñëåíû ïð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ç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òåëåì ía îïðåäåëåííûé îáúåêò.


ПРИМЕЧАНИЕ
Ìåòîäû, âûçûâaåìûå ÷åðåç óêaçaòåëè, ìîãóò áûòü âèðòóaëüíûìè. Ïðè ýòîì âûçûâaåòñя ìåòîä, ñîîòâåòñòâóþùèé òèïó îáúåêòa, ê êîòîðîìó ïðèìåíяëñя óêaçaòåëü.

Ôîðìaò ónaçaòåëя ía ïîëå nëañña:



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   113   114   115   116   117   118   119   120   ...   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