Hem introduït espais de noms al conjunt 1.
Espai de noms a C ++ | Conjunt 1 (Introducció)
Definició d'un espai de nom:
Una definició d'espai de noms comença amb l'espai de noms de paraules clau seguit del nom de l'espai de noms de la manera següent:
10 de 100
nom de noms de noms d'espai
{
// Declaracions de codi, és a dir, variable (int a;)
Mètode (void add ();)
classes (classe estudiant {};)
}
Cal destacar que no hi ha cap punt i coma (;) després de la clausura de tancament.
Per trucar a la versió habilitat per a l'espai de noms de la funció o la variable Prepend el nom de l'espai de noms de la manera següent:
nom de noms_name :: codi; // El codi podria ser una funció o classe variable.
va dir Madhuri
La directiva d'ús:
També podeu evitar la prepulsió dels espais de nom amb la Directiva de l'espai de noms. Aquesta directiva indica al compilador que el codi posterior està utilitzant noms a l'espai de noms especificat.
L'espai de noms està implicat així per al codi següent:
#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; }
Els noms introduïts en una directiva obeeixen regles d'abast normal. El nom és visible des del punt de la Directiva d'ús fins al final de l'abast en què es troba la directiva. Les entitats amb el mateix nom definides en un àmbit exterior estan ocultes.
Espais de noms imbricats:
Els espais de noms es poden nidificar on podeu definir un espai de noms dins d'un altre espai de nom de la següent manera:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Podeu accedir als membres de l'espai de noms imbricats mitjançant els operadors de resolució de la següent manera:
// per accedir als membres de nomspace_name2
Utilitzant noms d'espai namespace_name1 :: nomspace_name2;
// Per accedir als membres de l'espai de noms: nom1
Utilitzant noms d'espai de nomspace_name1;
A les afirmacions anteriors si utilitzeu nomspace_name1, farà que els elements de nomspace_name2 estiguin disponibles a l'abast de la següent manera:
comparar amb javaC++
#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; }
També és possible crear més d’un espai de nom a l’espai global. Això es pot fer de dues maneres.
sincronitzar java
-
Sortida:
-
Sortida:
- Es poden utilitzar directament al mateix programa i s’utilitzen per declarar identificadors únics.
- En els espais de noms sense nom, el nom de l'espai de noms no es menciona a la declaració de l'espai de noms.
- El nom de l’espai de noms és generat exclusivament pel compilador.
- Els espais de noms sense nom que heu creat només seran accessibles dins del fitxer on el creeu.
- Els espais de noms sense nom són la substitució de la declaració estàtica de variables.
CPP
// A C++ program to show more than one namespaces // with different names. #include using namespace std; // first name space namespace first { int func() { return 5; } } // second name space namespace second { int func() { return 10; } } int main() { // member function of namespace // accessed using scope resolution operator cout << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
També és possible crear dos blocs d'espai de nom amb el mateix nom. El segon bloc d'espai de noms no és més que la continuació de l'espai de noms. En paraules més senzilles podem dir que els dos espais de nom no són diferents, sinó que en realitat es defineixen en parts.
CPP
// C++ program to demonstrate namespace extension #include using namespace std; // first name space namespace first { int val1 = 500; } // rest part of the first namespace namespace first { int val2 = 501; } int main() { cout << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
Espais de noms sense nom
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
Sortida:
300