Imenski prostor v C ++ | Set 3 (dostop, ustvarjanje glave, gnezdenje in vzdevek)

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

Različni načini dostopa do imenskega prostora: V C ++ obstajata dva načina dostopa do spremenljivk in funkcij imenskega prostora.

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:

 namespace  namespace_name    
{
// code declarations i.e. variable  (int a;)
method (void add();)
classes ( class student{};)
}

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:

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

1. normalen način  

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     &  lt  ;  &  lt  ;     geek  ::  rel     &  lt  ;  &  lt  ;     &  quot  ;    n  &  quot  ;;     // prints 300      return     0  ;   }   

Izhod:

 300   

2. "Uporaba" direktive  

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     &  lt  ;  &  lt  ;     rel     &  lt  ;  &  lt  ;     &  quot  ;    n  &  quot  ;;     //prints 300          return     0  ;   }   

Izhod:

 300   

Uporaba imenskega prostora v datotekah glave V eni datoteki lahko ustvarimo imenski prostor in dostopamo do vsebine z drugim programom. To se naredi na naslednji način.

  • Ustvariti moramo dve datoteki. Ena, ki vsebuje imenski prostor in vse člane podatkov in člane, ki jih želimo uporabiti pozneje.
  • Drugi program pa lahko neposredno pokliče prvi program, da uporabi vse člane podatkov in člane članov v njem.

Datoteka 1  

CPP
   // file1.h    namespace     foo   {      int     value  ()         {         return     5  ;         }   }   

Datoteka 2  

CPP
   // file2.cpp - Not to be executed online   #include      #include file1.h   // Including file1   using     namespace     std  ;   int     main     ()      {      cout     &  lt  ;  &  lt  ;     foo  ::  value  ();      return     0  ;   }   

Tu lahko vidimo, da je imenski prostor ustvarjen v file1.h in vrednost () tega imenskega prostora se imenuje v file2.cpp. Gnezdeni prostori imen V imenskih prostorih C ++ lahko tudi gnezdimo, to je en imenski prostor v drugem. Ločljivost spremenljivk imenskega prostora je hierarhična. 

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     &  lt  ;  &  lt  ;     out  ::  in  ::  val2  ;     // prints 5      return     0  ;   }   

Izhod:

 5   

Vzdevek imenskega prostora: V C ++ lahko za lažjo uporabo uporabite ime vzdevke za ime imena. Obstoječi prostori imen so lahko privezani z novimi imeni z naslednjo skladnjo:

 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     &  lt  ;  &  lt  ;     alias  ::  var     &  lt  ;  &  lt  ;     'n'  ;   }   

Izhod:

 42   

Če vam je všeč geeksforgeeks in želite prispevati, lahko napisati tudi članek s pomočjo uporabe Write.geeksforgeeks.org ali pošljite svoj članek na [email protected]. Oglejte si svoj članek, ki se pojavlja na glavni strani Geeksforgeeks in pomaga drugim.


Morda Vam Bo Všeč