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



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

ПРИМЕЧАНИЕ
Ïåðåãðóæaòü ìîæíî íå òîëüêî êîíñòðóêòîðû, íî è äðóãèå ìåòîäû êëañña.

Cóùåñòâóåò åùå îäèí ñïîñîá èíèöèaëèçaöèè ïîëåñ â nîíñòðónòîðå (êðîìå èñ- ïîëüçîâaííîãî â ïðèâåäåííîé âûøå ïðîãðaììå ïðèñâaèâaíèя ïîëяì çía÷åíèé ôîðìaëüíûõ ïaðaìåòðîâ) — ñ ïîìîùüþ ñïèñêa èíèöèaëèçaòîðîâ, ðañïîëîæåí- íûõ ïîñëå äâîåòî÷èя ìåæäó çaãîëîâêîì è òåëîì êîíñòðóêòîða:


mOnstr::mOnstr(int he, int am):
health (he), ammO (am), skin (red), name (0){}
Ïîëя ïåðå÷èñëяþòñя ÷åðåç çaïяòóþ. Äëя êaæäîãî ïîëя â ñêîáêaõ óêaçûâaåòñя èíèöèaëèçèðóþùåå çía÷åíèå, êîòîðîå ìîæåò áûòü âûðaæåíèåì. Áåç ýòîãî ñïîñî- áa íå îáîéòèñü ïðè èíèöèaëèçaöèè ïîëåñ-nîíñòaíò, ïîëåñ-ññûëîn è ïîëåñ-îáúån- òîâ.  ïîñëåäíåì ñëó÷aå áóäåò âûçâaí êîíñòðóêòîð, ñîîòâåòñòâóþùèé óêaçaí- íûì â ñêîáêaõ ïaðaìåòðaì.


ПРИМЕЧАНИЕ
Êîíñòðóêòîð íå ìîæåò âîçâðaòèòü çía÷åíèå, ÷òîáû ñîîáùèòü îá îøèáêå âî âðåìя èíèöèa- ëèçaöèè. Äëя ýòîãî ìîæíî èñïîëüçîâaòü ìåõaíèçì îáðaáîòêè èñêëþ÷èòåëüíûõ ñèòóaöèé (cì. ðaçäåë «Èñêëþ÷åíèя â êîíñòðóêòîðaõ è äåñòðóêòîðaõ», ñ. 228).


Конструктор копирования


Êîíñòðóêòîð êîïèðîâaíèя — ýòî ñïåöèaëüíûé âèä êîíñòðóêòîða, ïîëó÷aþùèé â êa÷åñòâå åäèíñòâåííîãî ïaðaìåòða ññûëêó ía îáúåêò ýòîãî æå êëañña:
T::T(const T&) { /* Òåëî êîíñòðóêòîða */ }
ãäå T — èìя êëañña.

Ýòîò êîíñòðóêòîð âûçûâaåòñя â òåõ ñëó÷aяõ, êîãäa íîâûé îáúåêò ñîçäaåòñя ïóòåì êîïèðîâaíèя ñóùåñòâóþùåãî:



  • ïðè îïèñaíèè íîâîãî îáúåêòa ñ èíèöèaëèçaöèåé äðóãèì îáúåêòîì;

  • ïðè ïåðåäa÷å îáúåêòa â ôóíêöèþ ïî çía÷åíèþ;

  • ïðè âîçâðaòå îáúåêòa èç ôóíêöèè1.

Åñëè ïðîãðaììèñò íå óêaçaë íè îäíîãî êîíñòðóêòîða êîïèðîâaíèя, êîìïèëяòîð ñîçäaåò åãî aâòîìaòè÷åñêè. Òaêîé êîíñòðóêòîð âûïîëíяåò ïîýëåìåíòíîå êîïèðî- âaíèå ïîëåé. Åñëè êëaññ ñîäåðæèò óêaçaòåëè èëè ññûëêè, ýòî, ñêîðåå âñåãî, áóäåò íåïðaâèëüíûì, ïîñêîëüêó è êîïèя, è îðèãèíaë áóäóò óêaçûâaòü ía îäíó è òó æå îáëañòü ïaìяòè.
Çaïèøåì êîíñòðóêòîð êîïèðîâaíèя äëя êëañña mOnstr. Ïîñêîëüêó â íåì åñòü ïîëå name, ñîäåðæaùåå óêaçaòåëü ía ñòðîêó ñèìâîëîâ, êîíñòðóêòîð êîïèðîâaíèя äîë- æåí âûäåëяòü ïaìяòü ïîä íîâóþ ñòðîêó è êîïèðîâaòü â íåå èñõîäíóþ:
mOnstr::mOnstr(COnst mOnstr &M){ if (M.name){
name = new Char [strlen(M.name) + 1]; strCpy(name, M.name);}
else name = 0;
health = M.health; ammO = M.ammO; skin = M.skin;
}

mOnstr Vasia (blue);
mOnstr Super = Vasia; // Ðaáîòaåò êîíñòðóêòîð êîïèðîâaíèя mOnstr *m = new mOnstr ("Ork");
mOnstr Green = *m; // Ðaáîòaåò êîíñòðóêòîð êîïèðîâaíèя


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

Ïðaâèëa íaïèñaíèя êîíñòðóêòîðîâ êëaññîâ, âõîäяùèõ â èåðaðõèþ, îïèñaíû â ðaçäåëå «Ïðîñòîå íañëåäîâaíèå», ñ. 201.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   105   106   107   108   109   110   111   112   ...   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