Namespace C ++ | 3. komplekts (piekļuve, izveidojot galveni, ligzdošanu un aliasing)

Namespace C ++ | 1. komplekts (ievads) Namespace C ++ | 2. komplekts (pagarinot nosaukumvietu un nenosauktu Namespace)

Dažādi veidi, kā piekļūt nosaukumvietai: C ++ ir divi veidi, kā piekļūt nosaukumvietas mainīgajiem un funkcijām.

Nosaukumvietas definēšana:

Namespace definīcija sākas ar atslēgvārdu nosaukumvietu, kam seko nosaukumvietas nosaukums šādi:

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

Jāatzīmē, ka pēc noslēguma stiprinājuma nav semikola (;).
Lai izsauktu funkcijas vai mainīgā versiju, kas iespējota ar nosaukumvietu, sagatavojiet nosaukumvietas vārdu šādi:
namespace_name :: Code;  // kods varētu būt mainīga funkcija vai klase.

LIETOŠANAS DIREKTĪVA:

Varat arī izvairīties no nosaukumvietas sagatavošanas ar lietošanas nosaukuma direktīvu. Šī direktīva norāda kompilatoram, ka nākamais kods izmanto nosaukumus norādītajā nosaukumvietā. 
Tādējādi nosaukumvieta tiek domāta šādam kodam:

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

Vārdi, kas ieviesti lietošanas direktīvā, ievērojiet normālos darbības jomas noteikumus. Nosaukums ir redzams no lietošanas direktīvas punkta līdz tā darbības jomas beigām, kurā tiek atrasta direktīva. Entītijas ar tādu pašu nosaukumu, kas definēts ārējā tvērumā, ir paslēptas.

Ligzdotas namespaces:

Namespaces var ligzdot, kur jūs varat definēt vienu nosaukumvietu cita vārda telpā šādi:

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

Jūs varat piekļūt ligzdotās nosaukumvietas locekļiem, izmantojot izšķirtspējas operatorus šādi:
// Lai piekļūtu namespace_name2 dalībniekiem
izmantojot namespace namespace_name1 :: namespace_name2;
// Lai piekļūtu Namespace dalībniekiem: Name1
izmantojot namespace namespace_name1;


Iepriekš minētajos paziņojumos, ja izmantojat namespace_name1, tad tas padarīs namespace_name2 elementus pieejamus šādi:

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. Normāls veids  

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

Izlaide:

 300   

2. 'Direktīvas izmantošana  

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

Izlaide:

 300   

Izmantojot Namespace galvenes failos Mēs varam izveidot nosaukumvietu vienā failā un piekļuves saturu, izmantojot citu programmu. Tas tiek darīts šādā veidā.

  • Mums jāizveido divi faili. Viens, kas satur nosaukumvietu un visas datu dalībnieku un dalībnieku funkcijas, kuras mēs vēlamies izmantot vēlāk.
  • Un otra programma var tieši izsaukt pirmo programmu, lai izmantotu visas tajā esošo datu dalībnieku un dalībnieku funkcijas.

1. fails  

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

2. fails  

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

Šeit mēs redzam, ka nosaukumvieta tiek izveidota failā1.h un vērtība () no šīs nosaukumvietas tiek izsaukta vietnē File2.cpp. Ligzdotas nosaukumvietas C ++ nosaukumvietās var arī ligzdot, t.i., viena nosaukumvieta citā. Namespace mainīgo izšķirtspēja ir hierarhiska. 

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

Izlaide:

 5   

Namespace aliasing: C ++ lietošanas ērtībai varat izmantot aizstājvārdu nosaukumam. Esošās nosaukumvietas var aizstāt ar jauniem nosaukumiem ar šādu sintakse:

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

Izlaide:

 42   

Ja jums patīk geeksforgeeks un vēlaties dot savu ieguldījumu, varat arī uzrakstīt rakstu, izmantojot Write.Geeksforgeeks.org Vai arī nosūtiet savu rakstu uz e-pastu [email protected]. Skatiet savu rakstu, kas parādās Geeksforgeeks galvenajā lapā, un palīdziet citiem geeks.