Navneområde i C ++ | Sæt 3 (adgang til, oprettelse af header, hekke og aliasing)

Navneområde i C ++ | Sæt 1 (introduktion) Navneområde i C ++ | Sæt 2 (udvidelse af navneområdet og navngivet navneområde)

Forskellige måder at få adgang til navneområdet: I C ++ er der to måder at få adgang til navneområdevariabler og funktioner på.

Definition af et navneområde:

En navneområde -definition begynder med nøgleordets navneområde efterfulgt af navneområdet som følger:

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

Det skal bemærkes, at der ikke er nogen semikolon (;) efter den afsluttende afstivning.
For at kalde navneområdet-aktiveret version af enten funktion eller variabel præpend navneområdet som følger:
NAMESPACE_NAME :: CODE;  // kode kan være variabel funktion eller klasse.

Brugsdirektivet:

Du kan også undgå forberedelse af navneområder med brug af navneområdet. Dette direktiv fortæller kompilatoren, at den efterfølgende kode bruger navne i det specificerede navneområde. 
Navneområdet antydes således for følgende kode:

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

Navne, der blev indført i et brug af direktiv, overholder normale omfangsregler. Navnet er synligt fra det punkt, der bruger direktivet til slutningen af ​​det omfang, hvor direktivet findes. Enheder med samme navn defineret i et ydre omfang er skjult.

Nestede navneområder:

Navneområder kan indlejres, hvor du kan definere et navneområde inde i et andet navn plads som følger:

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

Du kan få adgang til medlemmer af indlejret navneområde ved hjælp af opløsningsoperatører som følger:
// for at få adgang til medlemmer af navneområde_name2
ved hjælp af navneområdet navneområde_name1 :: navneområde_name2;
// for at få adgang til medlemmer af navneområdet: Navn1
ved hjælp af navneområdet navneområde_name1;


I ovenstående udsagn, hvis du bruger navneområde_name1, vil det gøre elementer af navneområde_name2 tilgængelig i omfanget som følger:

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. normal måde  

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

Output:

 300   

2. 'Brug' Direktiv  

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

Produktion:

 300   

Brug af navneområde i headerfiler Vi kan oprette navneområde i en fil og få adgang til indhold ved hjælp af et andet program. Dette gøres på følgende måde.

  • Vi er nødt til at oprette to filer. En indeholder navneområdet og alle de datamedlemmer og medlemsfunktioner, vi vil bruge senere.
  • Og det andet program kan direkte ringe til det første program for at bruge alle datamedlemmer og medlemsfunktioner i det.

Fil 1  

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

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

Her kan vi se, at navneområdet oprettes i File1.h, og værdien () af det navneområde kaldes i File2.cpp. Nestede navneområder I C ++ kan navneområder også indlejres, dvs. et navneområde inde i et andet. Opløsningen af ​​navneområdevariabler er hierarkiske. 

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

Output:

 5   

Navneområde aliasing: I C ++ kan du bruge et aliasnavn til dit navneområde -navn for brugervenlighed. Eksisterende navneområder kan aliases med nye navne med følgende syntaks:

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

Output:

 42   

Hvis du kan lide Geeksforgeeks og gerne vil bidrage, kan du også skrive en artikel ved hjælp af skriv.geeksforgeeks.org eller mail din artikel til [email protected]. Se din artikel, der vises på Geeksforgeeks hovedside og hjælper andre nørder.