logo

Imenski prostor u C ++ | Set 2 (proširenje prostora imena i neimenovani prostor imena)

Uveli smo imene prostora u nižoj setu 1.
Imenski prostor u C ++ | SET 1 (uvod)

Definiranje prostora imena:



Definicija imenovanog prostora započinje s prostorom imena ključne riječi, a slijedi ime imena na sljedeći način:

ime imena imenaspace_name 
{
// Deklaracija koda, tj. varijabla (int a;)
Metoda (void add ();)
nastava (razredni učenik {};)
}

indeks Jave

Treba napomenuti da nakon završne narukvice nema zareza (;).
Da biste nazvali verziju funkcije s omogućenom imenom bilo koje ili varijable, pretoči naziv imena na sljedeći način:
imenaspace_name :: code;  // Kod može biti promjenjiva funkcija ili klasa.



Korištenje direktive:

Također možete izbjeći preradu prostora imena pomoću Direktive o prostoru imena. Ova direktiva kaže prevoditeljima da sljedeći kôd koristi imena u navedenom prostoru imena. 
Spas imena podrazumijeva se za sljedeći kôd:

C++
#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; } 

Imena uvedena u korištenje direktive Poslušajte uobičajena pravila opsega. Ime je vidljivo s točke korištenja direktive do kraja opsega u kojem se nalazi direktiva. Entiteti s istim nazivom definiranim u vanjskom opsegu su skriveni.



kat timpf težina

Ugniježđeni prostori imena:

Prostori imena mogu se ugniježditi tamo gdje možete definirati jedan prostor imena unutar drugog prostora imena na sljedeći način:

SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } }

Članovima ugniježđenog imena možete pristupiti pomoću operatora rezolucije na sljedeći način:
// pristupiti članovima imenaPace_name2
Korištenje imena imena imenaspace_name1 :: namespace_name2;
// pristupiti članovima imena prostora: name1
Korištenje imena imena imenaspace_name1;


U gornjim izjavama ako koristite imenaspace_name1, tada će to učiniti elemente imenaspace_name2 dostupnim u opsegu na sljedeći način:

groovy jezik
C++
#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; } 


Također je moguće stvoriti više prostora imena u globalnom prostoru. To se može učiniti na dva načina. 
 

    ime imena koji imaju različita imena 
     
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 &lt;&lt; first::func() &lt;&lt;&quot;n&quot;;   cout &lt;&lt; second::func() &lt;&lt;&quot;n&quot;;   return 0; } 

  • Izlaz: 
     
5 10
    Proširenje prostora imena (koristeći isto ime dva puta) 
    Također je moguće stvoriti dva bloka prostora imena koji imaju isto ime. Drugi blok prostora imena nije ništa drugo nego zapravo nastavak prvog prostora imena. Jednostavnijim riječima, možemo reći da oba mjesta imena nisu drugačija, već su jednaka jednaka u dijelovima. 
     
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 &lt;&lt; first::val1 &lt;&lt;&quot;n&quot;;   cout &lt;&lt; first::val2 &lt;&lt;&quot;n&quot;;   return 0; } 

  • Izlaz: 
     
500 501


Neimenovane prostore imena  
 

uri u odnosu na url
  • Oni su izravno upotrebljivi u istom programu i koriste se za proglašavanje jedinstvenih identifikatora.
  • U neimenovanim imenima imena imena prostora imena koji se ne spominje u deklaraciji prostora imena.
  • Naziv prostora imena jedinstveno je generirao prevoditelj.
  • Neimenovane prostore imena koje ste stvorili bit će dostupni samo u datoteci u kojoj ste ga stvorili.
  • Neimenovani prostori imena su zamjena za statičku deklaraciju varijabli.


 

CPP
// C++ program to demonstrate working of unnamed  // namespaces #include    using namespace std; // unnamed namespace declaration namespace  {  int rel = 300;  } int main() {  cout &lt;&lt; rel &lt;&lt; &quot;n&quot;; // prints 300  return 0; } 

Izlaz: 
 

300