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



Download 2 Mb.
bet130/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   126   127   128   129   130   131   132   133   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Специализация шаблонов классов


Ê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 print øaáëîía List èìååò âèä
template vOid List ::print();
ñïåöèaëèçèðîâaííûé ìåòîä äëя âûâîäa ñïèñêa ñèìâîëîâ áóäåò âûãëяäåòü ñëå- äóþùèì îáðaçîì:
vOid List ::print(){
… // Òåëî ñïåöèaëèçèðîâaííîãî âaðèaíòa ìåòîäa print
}
Åñëè â ïðîãðaììå ñîçäaòü ýêçåìïëяð øaáëîía List òèïa Char, ñîîòâåòñòâóþùèé âaðèaíò ìåòîäa áóäåò âûçâaí aâòîìaòè÷åñêè.
Ïðè ñïåöèaëèçaöèè öåëîãî nëañña ïîñëå îïèñaíèя îáîáùåííîãî âaðèaíòa êëañña ïîìåùaåòñя ïîëíîå îïèñaíèå ñïåöèaëèçèðîâaííîãî êëañña, ïðè ýòîì òðåáóåòñя çaíîâî îïðåäåëèòü âñå åãî ìåòîäû. Äîïóñòèì, òðåáóåòñя ñïåöèaëèçèðîâaòü øaá- ëîí BlOCk, îïèñaííûé â ïðåäûäóùåì ðaçäåëå, äëя õðaíåíèя 100 öåëûõ âåëè÷èí1:
Class BlOCk{ publiC:
BlOCk(){p = new int [100];}
~BlOCk(){delete [] p;} OperatOr int *();
prOteCted:
int* p;
};


1 Íå ñòîèò èñêaòü â ýòîì ãëóáîêèé ñìûñë — ïðèìåð ïðèâåäåí äëя äåìîíñòðaöèè ñèíòaêñèña.

BlOCk::OperatOr int *(){ return p;


}
Ïðè îïðåäåëåíèè ýêçåìïëяðîâ øaáëîía BlOCk ñ ïaðaìåòðaìè int è 100 áóäåò ç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.
Còaíäaðòíaя áèáëèîòåêa C++ ïðåäîñòaâëяåò áîëüøîé íaáîð øaáëîíîâ äëя ðaç- ëè÷íûõ ñïîñîáîâ îðãaíèçaöèè õðaíåíèя è îáðaáîòêè äaííûõ (ñì. ðaçäåë «Êîí- òåéíåðíûå êëaññû», ñ. 295).

Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   126   127   128   129   130   131   132   133   ...   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