Ïîèìåíîâ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ò:
namespaCe [ èìя_îáë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òîðîì statiC. Ïîìåùaòü îáúяâëåíèя â òaêóþ îáëañòü ïîëåçíî äëя òîãî, ÷òîáû ñîõðaíèòü ëîêaëüíîñòü êîäa. Íåëüçя ïîëó÷èòü äîñòóï èç îäíîãî ôaé- ëa ê ýëåìåíòó íåèìåíîâaííîé îáëañòè äðóãîãî ôaéëa.
Ïðèìåð.
namespaCe demO{ inti= 1; intk= 0;
vOid funC1(int);
vOid funC2(int) { /* … */ }
}
namespaCe demO{ // Ðañøèðåíèå
// inti= 2; Íåâåðíî — äâîéíîå îïðåäåëåíèå vOid funC1(dOuble); // Ïåðåãðóçêa
vOid funC2(int); // Âåðíî (ïîâòîðíîå îáúяâëåíèå)
}
 îáúяâëåíèè ïîèìåíîâaííîé îáëañòè ìîãóò ïðèñóòñòâîâaòü êaê îáúяâëåíèя, òaê è îïðåäåëåíèя. Ëîãè÷íî ïîìåùaòü â íåå òîëüêî îáúяâëåíèя, a îïðåäåëяòü èõ
ïîçäíåå ñ ïîìîùüþ èìåíè îáëañòè è îïåðaòîða äîñòóïa ê îáëañòè âèäèìîñòè ::, íaïðèìåð:
vOid demO::funC1(int) { /* … */}
Ýòî ïðèìåíяåòñя äëя ðaçäåëåíèя èíòåðôåéña è ðåaëèçaöèè. Òaêèì ñïîñîáîì íåëüçя îáúяâèòü íîâûé ýëåìåíò ïðîñòðaíñòâa èìåí.
Îáúåêòû, îáúяâëåííûå âíóòðè îáëañòè, яâëяþòñя âèäèìûìè ñ ìîìåíòa îáúяâëå- íèя. Ê íèì ìîæíî яâíî îáðaùaòüñя ñ ïîìîùüþ èìåíè îáëañòè è îïåðaòîða äîñ- òóïa ê îáëañòè âèäèìîñòè ::, íaïðèìåð:
demO::i = 100; demO::funC2(10);
Åñëè èìя ÷añòî èñïîëüçóåòñя âíå ñâîåãî ïðîñòðaíñòâa, ìîæíî îáúяâèòü åãî äîñ- òóïíûì ñ ïîìîùüþ îïåðaòîða using:
using demO::i;
Ïîñëå ýòîãî ìîæíî èñïîëüçîâaòü èìя áåç яâíîãî óêaçaíèя îáëañòè.
Åñëè òðåáóåòñя ñäåëaòü äîñòóïíûìè âñå èìåía èç êaêîé-ëèáî îáëañòè, èñïîëüçó- åòñя îïåðaòîð using namespaCe:
using namespaCe demO;
Îïåðaòîðû using è using namespaCe ìîæíî èñïîëüçîâaòü è âíóòðè îáúяâëåíèя ïî- èìåíîâaííîé îáëañòè, ÷òîáû ñäåëaòü â íåé äîñòóïíûìè îáúяâëåíèя èç äðóãîé îáëañòè:
namespaCe Department_Of_Applied_MathematiCs{ using demO::i;
// …
}
Èìåía, îáúяâëåííûå â ïîèìåíîâaííîé îáëañòè яâíî èëè ñ ïîìîùüþ îïåðaòîða using, èìåþò ïðèîðèòåò ïî îòíîøåíèþ ê èìåíaì, îáúяâëåííûì ñ ïîìîùüþ îïåða- òîða using namespaCe (ýòî èìååò çía÷åíèå ïðè âêëþ÷åíèè íåñêîëüêèõ ïîèìåíîâaí- íûõ îáëañòåé, ñîäåðæaùèõ ñîâïaäaþùèå èìåía).
Êîðîòêèå èìåía ïðîñòðaíñòâ èìåí ìîãóò âîéòè â êîíôëèêò äðóã ñ äðóãîì, a äëèííûå íåïðaêòè÷íû ïðè íaïèñaíèè ðåaëüíîãî êîäa, ïîýòîìó äîïóñêaåòñя ââîäèòü ñèíîíèìû èìåí:
namespaCe DAM = Department_Of_Applied_MathematiCs;
Do'stlaringiz bilan baham: |