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



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

Статические методы


Còaòè÷åñêèå ìåòîäû ïðåäí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, ëèáî, åñëè õîòя áû îäèí îáúåêò êëañña óæå ñîçäaí, ÷åðåç èìя îáúåêòa.
Class A{
statiC int COunt; // Ïîëå COunt — ñêðûòîå publiC:
statiC vOid inC_COunt(){ COunt++; }

};


A::int COunt; // Îïðåäåëåíèå â ãëîáaëüíîé îáëañòè vOid f(){


A a;
// a.COunt++ — íåëüçя, ïîëå COunt ñêðûòîå
// Èçìåíåíèå ïîëя ñ ïîìîùüþ ñòaòè÷åñêîãî ìåòîäa: a.inC_COunt(); // èëè A::inC_COunt();
}
Còaòè÷åñêèå ìåòîäû íå ìîãóò áûòü êîíñòaíòíûìè (COnst) è âèðòóaëüíûìè (virtual).


Дружественные функции и классы


Èíîãä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 îáúåêòîâ (ñì. ñ. 284).
Íèæå ïåðå÷èñëåíû ïðaâèëa îïèñaíèя è îñîáåííîñòè äðóæåñòâåííûõ ôóíêöèé.

  • Äðóæåñòâåííaя ôóíêöèя îáúяâëяåòñя âíóòðè nëañña, ê ýëåìåíòaì êîòîðîãî åé íóæåí äîñòóï, ñ êëþ÷åâûì ñëîâîì friend.  êa÷åñòâå ïaðaìåòða åé äîëæåí ïåðåäaâaòüñя îáúåêò èëè ññûëêa ía îáúåêò êëañña, ïîñêîëüêó óêaçaòåëü this åé íå ïåðåäaåòñя.

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

  • Îäía ôóíêöèя ìîæåò áûòü äðóæåñòâåííîé ñðaçó íåñêîëüêèì êëaññaìè.

 êa÷åñòâå ïðèìåða íèæå ïðèâåäåíî îïèñaíèå äâóõ ôóíêöèé, äðóæåñòâåííûõ êëaññó mOnstr. Ôóíêöèя kill яâëяåòñя ìåòîäîì êëañña herO, a ôóíêöèя steal_ammO íå ïðèíaäëåæèò íè îäíîìó êëaññó. Îáåèì ôóíêöèяì â êa÷åñòâå ïaðaìåòða ïåðå- äaåòñя ññûëêa ía îáúåêò êëañña mOnstr.
Class mOnstr; // Ïðåäâaðèòåëüíîå îáúяâëåíèå êëañña Class herO{
publiC:
vOid kill(mOnstr &);

};

Class mOnstr{



friend int steal_ammO(mOnstr &); friend vOid herO::kill(mOnstr &);
// Êëaññ herO äîëzåí áûòü îïðåäåëåí ðaíåå
};
int steal_ammO(mOnstr &M){return --M.ammO;}
vOid herO::kill(mOnstr &M){M.health = 0; M.ammO = 0;}
Èñïîëüçîâaíèя äðóæåñòâåííûõ ôóíêöèé íóæíî ïî âîçìîæíîñòè èçáåãaòü, ïî- ñêîëüêó îíè íaðóøaþò ïðèíöèï èíêaïñóëяöèè è, òaêèì îáðaçîì, çaòðóäíяþò îò- ëaäêó è ìîäèôèêaöèþ ïðîãðaììû.



Download 2 Mb.

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