logo

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

Vi har introduceret navneområder i nedenfor sæt 1.
Navneområde i C ++ | Sæt 1 (introduktion)

sortere arrayliste

Definition af et navneområde:



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

Navneområde NAMESPACE_NAME 
{
// Kodeklarationer, dvs. variabel (int a;)
metode (void tilføj ();)
klasser (klassestudent {};)
}

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:

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


Det er også muligt at oprette mere end et navneområder i det globale rum. Dette kan gøres på to måder. 
 

    navneområder med forskellige navne 
     
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; } 

  • Produktion: 
     
5 10
    Udvidelse af navneområder (ved hjælp af samme navn to gange) 
    Det er også muligt at oprette to navneområdeblokke med samme navn. Det andet navneområde -blok er intet andet end faktisk fortsættelsen af ​​det første navneområde. Med enklere ord kan vi sige, at begge navneområder ikke er forskellige, men faktisk de samme, der defineres i dele. 
     
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; } 

  • Produktion: 
     
500 501


Navngivne navneområder  
 

  • De kan direkte anvendes i det samme program og bruges til at erklære unikke identifikatorer.
  • I navngivne navneområder Navn på navneområdet i ikke nævnt i erklæringen om navneområde.
  • Navnet på navneområdet genereres unikt af kompilatoren.
  • De navngivne navneområder, du har oprettet, vil kun være tilgængelig inden for den fil, du har oprettet den i.
  • Navngivne navneområder er erstatning for den statiske erklæring om variabler.


 

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

Produktion: 
 

300