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



Download 2 Mb.
bet107/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   103   104   105   106   107   108   109   110   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Указатель this


Êaæäûé îáúåêò ñîäåðæèò ñâîé ýêçåìïëяð ïîëåé êëañña. Ìåòîäû êëañña íaõîäяò- ñя â ïaìяòè â åäèíñòâåííîì ýêçåìïëяðå è èñïîëüçóþòñя âñåìè îáúåêòaìè ñîâìå- ñòíî, ïîýòîìó íåîáõîäèìî îáåñïå÷èòü ðaáîòó ìåòîäîâ ñ ïîëяìè èìåííî òîãî îáú- åêòa, äëя êîòîðîãî îíè áûëè âûçâaíû. Ýòî îáåñïå÷èâaåòñя ïåðåäa÷åé â ôóíêöèþ ñêðûòîãî ïaðaìåòða this, â êîòîðîì õðaíèòñя êîíñòaíòíûé óêaçaòåëü ía âûçâaâ- øèé ôóíêöèþ îáúåêò. Óêaçaòåëü this íåяâíî èñïîëüçóåòñя âíóòðè ìåòîäa äëя ññûëîê ía ýëåìåíòû îáúåêòa.  яâíîì âèäå ýòîò óêaçaòåëü ïðèìåíяåòñя â îñíîâ- íîì äëя âîçâðaùåíèя èç ìåòîäa óêaçaòåëя (return this;) èëè ññûëêè (return
*this;) ía âûçâaâøèé îáúåêò.
Äëя èëëþñòðaöèè èñïîëüçîâaíèя óêaçaòåëя this äîáaâèì â ïðèâåäåííûé âûøå êëaññ mOnstr íîâûé ìåòîä, âîçâðaùaþùèé ññûëêó ía íaèáîëåå çäîðîâîãî (ïîëå health) èç äâóõ ìîíñòðîâ, îäèí èç êîòîðûõ âûçûâaåò ìåòîä, a äðóãîé ïåðåäaåòñя åìó â êa÷åñòâå ïaðaìåòða (ìåòîä íóæíî ïîìåñòèòü â ñåêöèþ publiC îïèñaíèя êëañña):
mOnstr & the_best(mOnstr &M){
if( health > M.get_health()) return *this; return M;

}
… mOnstr Vasia(50), Super(200);


// Íîâûé îáúåêò Best èíèöèaëèçèðóåòñя çía÷åíèяìè ïîëåé Super: mOnstr Best = Vasia.the_best(Super);
Óêaçaòåëü this ìîæíî òaêæå ïðèìåíяòü äëя èäåíòèôèêaöèè ïîëя êëañña â òîì ñëó÷aå, êîãäa åãî èìя ñîâïaäaåò ñ èìåíåì ôîðìaëüíîãî ïaðaìåòða ìåòîäa. Äðóãîé ñïîñîá èäåíòèôèêaöèè ïîëя èñïîëüçóåò îïåðaöèþ äîñòóïa ê îáëañòè âèäèìîñòè:
vOid Cure(int health, int ammO){
this -> health += health; // Èñïîëüçîâaíèå this mOnstr:: ammO += ammO; // Èñïîëüçîâaíèå îïåðaöèè ::
}


Конструкторы


Êîíñòðóêòîð ïðåäíaçía÷åí äëя èíèöèaëèçaöèè îáúåêòa è âûçûâaåòñя aâòîìaòè-
÷åñêè ïðè åãî ñîçäaíèè. Íèæå ïåðå÷èñëåíû îñíîâíûå ñâîéñòâa êîíñòðóêòîðîâ.

  • Êîíñòðóêòîð íå âîçâðaùaåò çía÷åíèå, äaæå òèïa vOid. Íåëüçя ïîëó÷èòü óêaça- òåëü ía êîíñòðóêòîð.

  • Êëaññ ìîæåò èìåòü íåñnîëünî nîíñòðónòîðîâ ñ ðaçíûìè ïaðaìåòðaìè äëя ðaç- íûõ âèäîâ èíèöèaëèçaöèè (ïðè ýòîì èñïîëüçóåòñя ìåõaíèçì ïåðåãðóçêè).

  • Êîíñòðóêòîð, âûçûâaåìûé áåç ïaðaìåòðîâ, íaçûâaåòñя nîíñòðónòîðîì ïî óìîë÷aíèþ.

  • Ïaðaìåòðû nîíñòðónòîða ìîãóò èìåòü ëþáîé òèï, êðîìå ýòîãî æå êëañña. Ìîæíî çaäaâaòü çía÷åíèя ïaðaìåòðîâ ïî óìîë÷aíèþ. Èõ ìîæåò ñîäåðæaòü òîëüêî îäèí èç êîíñòðóêòîðîâ.

  • Åñëè ïðîãðaììèñò íå óêaçaë íè îäíîãî êîíñòðóêòîða, êîìïèëяòîð ñîçäaåò åãî aâòîìaòè÷åñnè. Òaêîé êîíñòðóêòîð âûçûâaåò êîíñòðóêòîðû ïî óìîë÷aíèþ äëя ïîëåé êëañña è êîíñòðóêòîðû ïî óìîë÷aíèþ áaçîâûõ êëaññîâ (ñì. ðaçäåë

«Ïðîñòîå íañëåäîâaíèå», ñ. 201).  ñëó÷aå, êîãäa êëaññ ñîäåðæèò êîíñòaíòû èëè ññûëêè, ïðè ïîïûòêå ñîçäaíèя îáúåêòa êëañña áóäåò âûäaía îøèáêa, ïî- ñêîëüêó èõ íåîáõîäèìî èíèöèaëèçèðîâaòü êîíêðåòíûìè çía÷åíèяìè, a êîí- ñòðóêòîð ïî óìîë÷aíèþ ýòîãî äåëaòü íå óìååò.

  • Êîíñòðónòîðû íå íañëåäóþòñя.

  • Êîíñòðóêòîðû íåëüçя îïèñûâaòü ñ ìîäèôèêaòîðaìè COnst, virtual è statiC.

  • Êîíñòðóêòîðû ãëîáaëüíûõ îáúåêòîâ âûçûâaþòñя äî âûçîâa ôóíêöèè main. Ëîê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   ...   103   104   105   106   107   108   109   110   ...   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