C pentru începători

C ++ pentru începători

2.7. Folosind un spațiu de nume

Să presupunem că vrem să împărtășim clasa Array, dezvoltată în exemplele precedente. Cu toate acestea, nu suntem singuri în această problemă; probabil de cineva undeva, să zicem, într-unul din departamentele Intel a fost creată aceeași clasă de nume. Deoarece numele acestor clase sunt identice, utilizatorii potențiali nu pot folosi ambele clase în același timp, trebuie să aleagă una dintre ele. Această problemă este rezolvată prin adăugarea la numele clasei a unui șir care îi identifică dezvoltatorii, să zicem:







Cuvântul de spațiu namespace specifică un spațiu de nume care definește vizibilitatea clasei noastre și este denumit în acest caz Cplusplus_Primer_3E. Să presupunem că avem clase de la alți dezvoltatori care sunt plasați în alte spații de nume:

În mod implicit, programul afișează obiecte declarate fără a specifica explicit spațiul de nume; ele aparțin spațiului de nume global. Pentru a accesa un obiect dintr-un alt spațiu, trebuie să utilizați numele său calificat, care constă din identificatorul spațiului de nume și identificatorul obiectului, separate de operatorul de permisiune de domeniu (: :). Iată referințele la obiectele din exemplele de mai sus:







Pentru ușurința utilizării, puteți aloca aliasuri spațiilor de nume. Pseudonimul este scurt și ușor de reținut. De exemplu:

Aliasurile sunt, de asemenea, folosite pentru a ascunde utilizarea spațiilor de nume. Prin înlocuirea aliasului, putem schimba setul de funcții și clase implicate, restul codului rămânând același. După corectarea unei singure linii în exemplul de mai sus, vom obține o definiție a unei matrice complet diferite:

Desigur, pentru a face acest lucru posibil, este necesar să se potrivească exact interfețele claselor și funcțiilor declarate în aceste spații de nume. Să presupunem că clasa Array de la Disney_Feature_Animation nu are un constructor cu un parametru-size. Apoi, următorul cod va provoca o eroare:

Chiar mai convenabil este modul de utilizare a unui nume simplu, necalificat pentru a accesa obiectele definite într-un anumit spațiu de nume. Există o directivă utilizată pentru aceasta:
#include "IBM_Canada_Laboratory.h"

Spațiul de nume IBM_Canada_Laboratory devine vizibil în program. Nu tot spațiul poate fi vizibil, dar denumirile individuale din interiorul lui (directivă selectivă):

După cum am menționat deja, toate componentele bibliotecii standard C ++ sunt declarate în spațiul de nume std. Prin urmare, activarea pur și simplu a fișierului antet nu este suficient pentru a utiliza direct funcțiile și clasele standard:

Trebuie să utilizați directiva de utilizare:

Rețineți, totuși, că vom reveni la problema "înfundării" spațiilor de nume globale, de dragul căruia am rezolvat mecanismul spațiilor numite. Prin urmare, este mai bine să utilizați fie un nume calificat:

Exercițiul 2.21

Având un spațiu de nume

și textul programului:







Articole similare

Trimiteți-le prietenilor: