Рис. 16.1. Иерархия классов стандартных исключений
Íèæå êðaòêî îïèñaíû ýòè êëaññû:
bad_allOC — îøèáêa ïðè äèíaìè÷åñêîì ðañïðåäåëåíèè ïaìяòè ñ ïîìîùüþ new;
bad_Cast — íåïðaâèëüíîå èñïîëüçîâaíèå îïåðaòîða dynamiC_Cast (ñì. ðaçäåë
«Ïðåîáðaçîâaíèя òèïîâ», ñ. 231);
bad_typeid — îïåðaöèя typeid íå ìîæåò îïðåäåëèòü òèï îïåðaíäa (ñì. ñ. 238);
bad_exCeptiOn — ïîðîæäaåòñя, åñëè ïðè âûçîâå ôóíêöèè, â ñïåöèôèêaöèè èñ- êëþ÷åíèé êîòîðîé îíî óêaçaíî, ïðîèçîøëî íåîæèäaåìîå èñêëþ÷åíèå;
380 Часть III. Стандартная библиотека
length_errOr — ïîïûòêa ñîçäaíèя îáúåêòa, áîëüøåãî, ÷åì ìaêñèìaëüíûé ðaç- ìåð òèïa size_t;
dOmain_errOr — íaðóøåíèå âíóòðåííèõ óñëîâèé ïåðåä âûïîëíåíèåì äåéñòâèя;
Out_Of_range — ïîïûòêa âûçîâa ôóíêöèè ñ ïaðaìåòðîì, íå âõîäяùèì â äîïóñ- òèìûå çía÷åíèя;
invalid_argument — ïîïûòêa âûçîâa ôóíêöèè ñ íåâåðíûì ïaðaìåòðîì;
range_errOr — íåïðaâèëüíûé ðåçóëüòaò âûïîëíåíèя;
OverflOw_errOr — aðèôìåòè÷åñêîå ïåðåïîëíåíèå (ðåçóëüòaò ñëèøêîì áîëüøîé äëя óêaçaííîãî òèïa äaííûõ);
underflOw_errOr — èñ÷åçíîâåíèå ïîðяäêa (ðåçóëüòaò ñëèøêîì ìaëåíüêèé äëя óêaçaííîãî òèïa äaííûõ).
Äëя èñïîëüçîâaíèя ýòèõ êëaññîâ íåîáõîäèìî ïîäêëþ÷èòü çaãîëîâî÷íûé ôaéë
.
Cðåäñòâa ëînaëèç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áîòû ñ nîìïëånñíûìè ÷èñëaìè áèáëèîòåêa ïðåäîñòaâëяåò øaáëîí êëañña
COmplex, åãî ñïåöèaëèçaöèè äëя òèïîâ flOat, dOuble è lOng dOuble, a òaêæå ìíîãî-
÷èñëåííûå ôóíêöèè. Âñå ýòî áîãaòñòâî ñòaíîâèòñя äîñòóïíûì ïðè ïîäêëþ÷åíèè çaãîëîâî÷íîãî ôaéëa .
Ôóíêöèè áèáëèîòåêè îïèñaíû â ïðèëîæåíèè 6, êîíñòaíòû, ìaêðîñû è òèïû — â ïðèëîæåíèè 5, çaãîëîâî÷íûå ôaéëû — â ïðèëîæåíèè 4.
Стандартные потоки
Âûïîëíèòü ç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 string.
Контейнерные классы
Âûïîëíèòü çaäaíèя èç ðaçäåëîâ «Îäíîìåðíûå è äâóìåðíûå ìaññèâû», «Còðóê- òóðû» è «Äèíaìè÷åñêèå ñòðóêòóðû äaííûõ» (ñì. óïðaæíåíèя ê ïåðâîé ÷añòè) ñ èñïîëüçîâaíèåì ñîîòâåòñòâóþùèõ êîíòåéíåðíûõ êëaññîâ áèáëèîòåêè.
Алгоритмы
Âûïîëíèòü çaäaíèя èç ðaçäåëa «Îäíîìåðíûå ìaññèâû» (ñì. óïðaæíåíèя ê ïåð- âîé ÷añòè) ñ èñïîëüçîâaíèåì êîíòåéíåðíûõ êëaññîâ è aëãîðèòìîâ áèáëèîòåêè.
Класс valarray
Âûïîëíèòü çaäaíèя èç ðaçäåëîâ «Îäíîìåðíûå ìaññèâû» è «Äâóìåðíûå ìaññè- âû» (ñì. óïðaæíåíèя ê ïåðâîé ÷añòè) ñ èñïîëüçîâaíèåì êëañña valarray è ñðåçîâ.
Послесловие
 ýòîé êíèãå áîëüøîå âíèìaíèå óäåëяëîñü îïèñaíèþ îñíîâ яçûêa C++. Âë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þùèõñя ñîïðîâîæäåíèþ.
Ïîâåäåíèå яçûêa îïðåäåëяþò öåëè, ïîñòaâëåííûå ïðè åãî ðaçðaáîòêå. Äëя C++ îñíîâíûìè öåëяìè яâëяëèñü ýôôåêòèâíîñòü, ïðèìåíèìîñòü äëя øèðîêîãî ñïåê- òða ðåaëüíûõ çaäa÷, a òaêæå ñîâìåñòèìîñòü ñ яçûêîì C, òðaäèöèîííûìè èíñòðó- ìåíòaìè è îêðóæåíèåì.
Èñòîðèя ñîçäaíèя яçûêa è ïðè÷èíû âêëþ÷åíèя â íåãî òåõ âîçìîæíîñòåé, êîòîðû- ìè îí îáëaäaåò â íañòîяùèé ìîìåíò, ïîäðîáíî îïèñaíû â êíèãå Á. Còðaóñòðóïa
«Äèçaéí è ýâîëþöèя яçûêa C++» [18]. Èçó÷åíèå ýòîé êíèãè ïîìîæåò ïîíяòü, îò-
÷åãî ñðåäñòâa яçûêa ðåaëèçîâaíû èìåííî òaê, a íå èía÷å. Ïîëåçíûå ïðaêòè÷åñêèå ñîâåòû ïî ãðaìîòíîìó íaïèñaíèþ ýôôåêòèâíûõ ïðîãðaìì ñîäåðæaòñя â êíèãaõ [17], [13] è [9]. Äëя ïîëó÷åíèя ïîëíîé ñïðaâî÷íîé èíôîðìaöèè î яçûêå è ñòaí- äaðòíîé áèáëèîòåêå ëó÷øå âñåãî ïîëüçîâaòüñя ñòaíäaðòîì ISO/IEC 14882:1998 (åãî ïðåäâaðèòåëüíûå âaðèaíòû, ìaëî îòëè÷aþùèåñя îò îêîí÷aòåëüíîãî, ìîæíî íaéòè â Èíòåðíåòå).
Æåëaþ âñåì ÷èòaòåëяì äaëüíåéøèõ óñïåõîâ â îñâîåíèè è èñïîëüçîâaíèè C++!
Àììåðaaëü Ë. STL äëя ïðîãðaììèñòîâ ía C++. — Ì.: ÄÌÊ, 2000. — 240 ñ.
Áaáý Á. Ïðîñòî è яñíî î Borland C++. — Ì.: ÁÈÍÎÌ, 1995. — 400 ñ.
Áaää Ò. Îáúåêòíî-îðèåíòèðîâaííîå ïðîãðaììèðîâaíèå â äåéñòâèè. — CÏá.: Ïèòåð, 1997. — 464 ñ.
Áaxåíîâa È. Þ. Visual C++ 6.0. Óðîêè ïðîãðaììèðîâaíèя. — Ì.: Äèaëîã- ÌÈÔÈ, 1999. — 416 ñ.
Äýâèñ C. C++ äëя «÷aéíèêîâ». — Ê.: Äèaëåêòèêa, 1996. — 304 ñ.
Áðónñ Ô. Ìèôè÷åñêèé ÷åëîâåêî-ìåñяö, èëè êaê ñîçäaþòñя ïðîãðaììíûå êîì- ïëåêñû. — Ì.: «Cèìâîë-Ïëþñ», 2000. — 304 ñ.
Áó÷ I. Îáúåêòíî-îðèåíòèðîâaííûé aíaëèç è ïðîåêòèðîâaíèå ñ ïðèìåðaìè ía C++.— Ì.: ÁÈÍÎÌ, 1998. — 560 ñ.
Âèðò Í. Àëãîðèòìû + ñòðóêòóðû äaííûõ = ïðîãðaììû. — Ì.: Ìèð, 1985. — 406 ñ.
Iîëóá À. È. C è C++. Ïðaâèëa ïðîãðaììèðîâaíèя. — Ì.: ÁÈÍÎÌ, 1996. — 272 ñ.
Êaðïîâ Á., Áaðaíîâa Ò. C++: ñïåöèaëüíûé ñïðaâî÷íèê. — CÏá.: Ïèòåð, 2000. — 480 ñ.
Ëañëî Ì. Âû÷èñëèòåëüíaя ãåîìåòðèя è êîìïüþòåðíaя ãðaôèêa ía C++. — Ì.: ÁÈÍÎÌ, 1997. — 304 ñ.
Ëóèñ Ä. C è C++. Cïðaâî÷íèê. — Ì.: Âîñòî÷íaя êíèæíaя êîìïaíèя, 1997. — 592 ñ.
Ìåñåðñ C. Ýôôåêòèâíîå èñïîëüçîâaíèå C++. — Ì.: ÄÌÊ, 2000. — 240 ñ.
Ïîäáåëüñnèñ Â. Â. ßçûê Cè++: Ó÷åáíîå ïîñîáèå. — Ì.: Ôèíaíñû è ñòaòèñòè- êa, 1996. — 560 ñ.
Ïîë È. Îáúåêòíî-îðèåíòèðîâaííîå ïðîãðaììèðîâaíèå ñ èñïîëüçîâaíèåì C++. — Ê.: ÄèaCîôò, 1995. — 480 ñ.
Ðîìaíîâñnaя Ë. Ì. è äð. Ïðîãðaììèðîâaíèå â ñðåäå Cè äëя ÏÝÂÌ ÅC. — Ì.: Ôèíaíñû è ñòaòèñòèêa, 1992. — 352 ñ.
Còðaóñòðóï Á. ßçûê ïðîãðaììèðîâaíèя C++. — CÏá.: ÁÈÍÎÌ, 1999. — 991 ñ.
Còðaóñòðóï Á. Äèçaéí è ýâîëþöèя яçûêa C++. — Ì.: ÄÌÊ, 2000. — 448 ñ.
Øèëäò I. Òåîðèя è ïðaêòèêa C++. — CÏá.: BHV, 1996. — 416 ñ.
Íåôîðìaëüíîå ââåäåíèå â C++ è Turbo Vision. — Ãaëåðåя «Ïåòðîïîëü», 1992. — 381 ñ.
Do'stlaringiz bilan baham: |