imenski prostor v C ++ | Set 2 (razširitev imenskega prostora in neimenovani imenski prostor)

Spodaj smo uvedli imenske prostore.
Imenski prostor v C ++ | Set 1 (Uvod)

Določitev imenskega prostora:

Opredelitev imenskega prostora se začne s ključnim imenskim prostorom, ki mu sledi ime imenskega prostora na naslednji način:

IMESPACE IMESPACE_NAME 
{
// kode izjave, tj. Spremenljivka (int a;)
metoda (void add ();)
Razredi (razred študent {};)
}

Opozoriti je treba, da po zaključni naramnici ni podpičja (;).
Če želite poklicati različico funkcije ali spremenljivke, ki podpira ime imena, predvidite ime imenskega prostora na naslednji način:
Namespace_name :: koda;  // koda je lahko spremenljiva funkcija ali razred.

Direktiva o uporabi:

Prav tako se lahko izognete prednastavitvi imenskih prostorov z direktivo o uporabi imenskega prostora. Ta direktiva pripovedovalcu pove, da naslednja koda uporablja imena v določenem imenskem prostoru. 
Imen prostor je tako nakazan za naslednjo kodo:

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 v uporabi direktive, upoštevajte normalno pravila obsega. Ime je vidno od točke direktive o uporabi do konca obsega, v katerem se najde direktiva. Entitete z istim imenom, opredeljene v zunanjem obsegu, so skrite.

Gnezdeni prostori za ime:

Imenske prostore lahko gnezdite tam, kjer lahko določite en prostor imena znotraj drugega prostora imena na naslednji način:

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

Do članov gnezdenega imenskega prostora lahko dostopate tako, da uporabite operaterje ločljivosti na naslednji način:
// Za dostop do članov imena imena2
z uporabo imenskega prostora imespace_name1 :: imespace_name2;
// Za dostop do članov imenskega prostora: ime1
z uporabo imenskega prostora imespace_name1;


V zgornjih izjavah, če uporabljate Namespace_Name1, bo v obsegu na voljo elemente Namespace_name2, kot sledi:

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  ;   }   


V svetovnem prostoru je mogoče ustvariti tudi več kot en prostore imena. To je mogoče storiti na dva načina. 
 

    prostore z različnimi imeni  
     
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  ;   }   

  • Izhod: 
     
5 10 
    Razširitev prostorov imena (dvakrat uporaba istega imena)  
    Prav tako je mogoče ustvariti dva bloka imenskega prostora z istoimenskim imenom. Drugi blok imenskega prostora ni nič drugega kot dejansko nadaljevanje prvega imenskega prostora. Z enostavnejšimi besedami lahko rečemo, da oba prostora imena nista različna, ampak dejansko enaka, ki sta opredeljena v delih. 
     
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  ;   }   

  • Izhod: 
     
500 501 


Neimenovani imenski prostori  
 

  • V istem programu so neposredno uporabne in se uporabljajo za razglasitev edinstvenih identifikatorjev.
  • V neimenovanem imenu imena imena v imenici, ki ni omenjen v deklaraciji imenskega prostora.
  • Ime imenskega prostora edinstveno ustvarja prevajalnik.
  • Neimenovani imenski prostori, ki ste jih ustvarili, bodo dostopni le v datoteki, v kateri ste jo ustvarili.
  • Neimenovani imenski prostori so zamenjava za statično deklaracijo spremenljivk.


 

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  ;   }   

Izhod: 
 

300