Spațiu de nume în C ++ | Setul 1 (Introducere) Spațiu de nume în C ++ | Set 2 (extinderea spațiului de nume și a spațiului de nume fără nume)
Diferite moduri de a accesa spațiul de nume: În C ++ există două moduri de accesare a variabilelor și funcțiilor spațiului de nume.
Definirea unui spațiu de nume:
O definiție a spațiului de nume începe cu spațiul de nume de cuvinte cheie urmat de numele spațiului de nume după cum urmează:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}
Se remarcă faptul că nu există niciun punct și virgulă (;;) după blocajul de închidere.
Pentru a apela la versiunea cu spațiu de nume a funcției sau a variabilei, preparați numele spațiului de nume după cum urmează:
NAGESPACE_NAME :: cod; // codul ar putea fi funcție sau clasă variabilă.
Directiva de utilizare:
De asemenea, puteți evita prepararea spațiilor de nume cu Directiva Utilizare a spațiului de nume. Această directivă spune compilatorului că codul ulterior utilizează nume în spațiul de nume specificat.
Spațiul de nume este astfel implicat pentru următorul cod:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } using namespace first_space; int main () { // This calls function from first name space. func(); return 0; }
Numele introduse într -o Directiva care utilizează regulile de aplicare normală. Numele este vizibil din punctul de utilizare a directivei până la sfârșitul domeniului de aplicare în care se găsește directiva. Entitățile cu același nume definit într -un domeniu exterior sunt ascunse.
java priorityqueue
Spații de nume cuibărite:
Spațiile de nume pot fi cuibărite acolo unde puteți defini un spațiu de nume în interiorul unui alt spațiu de nume după cum urmează:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}
Puteți accesa membrii spațiului de nume cuibărit folosind operatori de rezoluție după cum urmează:
// pentru a accesa membrii namespace_name2
Utilizarea spațiului de nume NAVESPACE_NAME1 :: NAGESPACE_NAME2;
// pentru a accesa membrii spațiului de nume: nume1
utilizarea spațiului de nume NAVESPACE_NAME1;
În declarațiile de mai sus, dacă utilizați namespace_name1, atunci va pune la dispoziție elemente de namespace_name2 în domeniul de aplicare după cum urmează:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } } using namespace first_space::second_space; int main () { // This calls function from second name space. func(); return 0; }
1. Mod normal
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #include using namespace std; namespace geek { int rel = 300; } int main() { // variable ‘rel’ accessed // using scope resolution operator cout << geek::rel << "n"; // prints 300 return 0; }
Ieșire:
300
2. Directiva „Utilizarea”
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #include using namespace std; namespace geek { int rel = 300; } // use of ‘using’ directive using namespace geek; int main() { // variable ‘rel’ accessed // without using scope resolution variable cout << rel << "n"; //prints 300 return 0; }
Ieșire:
300
Utilizarea spațiului de nume în fișierele antetului Putem crea spațiu de nume într -un fișier și conținut de acces folosind un alt program. Acest lucru se face în felul următor.
- Trebuie să creăm două fișiere. Unul care conține spațiul de nume și toți membrii datelor și funcțiile de membru pe care dorim să le folosim mai târziu.
- Iar celălalt program poate apela direct primul program care a utilizat toți membrii datelor și funcțiile membrilor din acesta.
Fișier 1
CPP// file1.h namespace foo { int value() { return 5; } }
Fișier 2
CPP// file2.cpp - Not to be executed online #include #include file1.h // Including file1 using namespace std; int main () { cout << foo::value(); return 0; }
Aici putem vedea că spațiul de nume este creat în File1.h, iar valoarea () din acel spațiu de nume este apelat în file2.cpp. Spații de nume cuibărite În spațiile de nume C ++ pot fi, de asemenea, cuibărite, adică un spațiu de nume în interiorul altuia. Rezoluția variabilelor spațiului de nume este ierarhică.
CPP// C++ program to demonstrate nesting of namespaces #include using namespace std; // Nested namespace namespace out { int val = 5; namespace in { int val2 = val; } } // Driver code int main() { cout << out::in::val2; // prints 5 return 0; }
Ieșire:
5
Aliasing spațiu de nume: În C ++ puteți utiliza un nume alias pentru numele spațiului dvs. de nume pentru o ușurință de utilizare. Spațiile de nume existente pot fi aliase cu nume noi cu următoarea sintaxă:
namespace new_name = current_name;CPP
#include namespace name1 { namespace name2 { namespace name3 { int var = 42; } } } // Aliasing namespace alias = name1::name2::name3; int main() { std::cout << alias::var << 'n'; }
Ieșire:
42
Dacă vă place geeksforgeeks și doriți să contribuiți, puteți scrie și un articol folosind write.geeksforgeeks.org Sau trimiteți-vă articolul la revizuirea-g-e-greeksforgeeks.org. Consultați articolul dvs. care apare pe pagina principală Geeksforgeeks și ajutați alți geeki.