Spazio dei nomi in C++ | Set 1 (Introduzione) Spazio dei nomi in C++ | Set 2 (estensione dello spazio dei nomi e spazio dei nomi senza nome)
Diversi modi per accedere allo spazio dei nomi: In C++ ci sono due modi per accedere alle variabili e alle funzioni dello spazio dei nomi.
Definizione di uno spazio dei nomi:
Una definizione di spazio dei nomi inizia con la parola chiave namespace seguita dal nome dello spazio dei nomi come segue:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}
È da notare che non c'è il punto e virgola (;) dopo la parentesi graffa di chiusura.
Per chiamare la versione abilitata allo spazio dei nomi di una funzione o di una variabile, anteporre il nome dello spazio dei nomi come segue:
nome_spazio_nome: :codice; // il codice potrebbe essere una funzione o una classe variabile.
La direttiva using:
Puoi anche evitare di anteporre gli spazi dei nomi con la direttiva using namespace. Questa direttiva indica al compilatore che il codice successivo utilizza nomi nello spazio dei nomi specificato.
Lo spazio dei nomi è quindi implicito per il seguente codice:
#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; }
I nomi introdotti in una direttiva using obbediscono alle normali regole di ambito. Il nome è visibile dal punto della direttiva using fino alla fine dell'ambito in cui si trova la direttiva. Le entità con lo stesso nome definite in un ambito esterno vengono nascoste.
Spazi dei nomi nidificati:
i 10 migliori hentai
Gli spazi dei nomi possono essere nidificati in cui è possibile definire uno spazio dei nomi all'interno di un altro spazio dei nomi come segue:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}
È possibile accedere ai membri dello spazio dei nomi nidificato utilizzando gli operatori di risoluzione come segue:
// per accedere ai membri di namespace_name2
utilizzando lo spazio dei nomi namespace_name1::namespace_name2;
// per accedere ai membri di namespace:name1
utilizzando lo spazio dei nomi namespace_name1;
Nelle istruzioni precedenti, se stai utilizzando namespace_name1, gli elementi di namespace_name2 saranno disponibili nell'ambito come segue:
#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. Modo normale
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; }
Produzione :
300
2. direttiva "utilizzando".
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; }
Produzione:
300
Utilizzo dello spazio dei nomi nei file di intestazione Possiamo creare uno spazio dei nomi in un file e accedere ai contenuti utilizzando un altro programma. Ciò viene fatto nel modo seguente.
- Dobbiamo creare due file. Uno contenente lo spazio dei nomi e tutti i membri dati e le funzioni membro che vogliamo utilizzare in seguito.
- E l'altro programma può chiamare direttamente il primo programma per utilizzare tutti i membri dati e le funzioni membro in esso contenuti.
Fascicolo 1
CPP// file1.h namespace foo { int value() { return 5; } }
Fascicolo 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; }
Qui possiamo vedere che lo spazio dei nomi viene creato in file1.h e il valore() di quello spazio dei nomi viene chiamato in file2.cpp. Spazi dei nomi nidificati In C++ gli spazi dei nomi possono anche essere nidificati, ovvero uno spazio dei nomi all'interno di un altro. La risoluzione delle variabili dello spazio dei nomi è gerarchica.
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; }
PRODUZIONE :
5
Aliasing dello spazio dei nomi: In C++ puoi utilizzare un nome alias per il nome dello spazio dei nomi per facilità d'uso. Gli spazi dei nomi esistenti possono essere alias con nuovi nomi con la seguente sintassi:
mamta kulkarni
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'; }
Produzione :
42
Se ti piace GeeksforGeeks e desideri contribuire puoi anche scrivere un articolo utilizzando write.geeksforgeeks.org oppure invia il tuo articolo via email a [email protected]. Guarda il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geeks.