logo

Namnområdet i C ++ | Set 3 (åtkomst, skapa rubrik, häckning och aliasing)

Namnområdet i C ++ | Set 1 (introduktion) Namnområdet i C ++ | Set 2 (utökade namnområdet och namngivet namnområde)

java för paus

Olika sätt att komma åt namnområdet: I C ++ finns det två sätt att få åtkomst till namnutrymmevariabler och funktioner.



Definiera ett namnområde:

En definition av namnområdet börjar med nyckelordens namnområde följt av namnområdet på följande sätt:

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

Det bör noteras att det inte finns någon semikolon (;) efter den avslutande staget.
För att ringa den namnutrymme-aktiverade versionen av antingen funktion eller variabel förbereda namnutrymmet på följande sätt:
NAMESPACE_NAME :: kod;  // Kod kan vara variabel funktion eller klass.



Det användande direktivet:

Du kan också undvika att förbereda namnutrymmen med namnutrymmet. Detta direktiv berättar för kompilatorn att den efterföljande koden använder namn i det angivna namnområdet. 
Namnområdet är således underförstått för följande kod:

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

Namn som introducerats i ett som använder direktivet följer regler för normala omfattning. Namnet är synligt från punkten för att använda direktivet till slutet av omfattningen som direktivet finns. Enheter med samma namn som definieras i ett yttre omfattning är dolda.



Kapslade namnutrymmen:

Namnområden kan kapslas där du kan definiera ett namnområde i ett annat namnutrymme enligt följande:

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

Du kan komma åt medlemmar i kapslade namnområden genom att använda upplösningsoperatörer enligt följande:
// för att få åtkomst till medlemmar i namnutrymmet_name2
Använda namnutrymme NAMESPACE_NAME1 :: NAMESPACE_NAME2;
// för att få åtkomst till medlemmar i namnområdet: NAME1
Använda namnutrymme Namespace_Name1;


I ovanstående uttalanden om du använder namnutrymme_name1 kommer det att göra element av namnutrymme_name2 tillgängliga i omfattningen enligt följande:

format sträng java
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. Normalt sätt  

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. 'Använda' 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:

minimax algoritm
300  

Använda namnområdet i rubrikfiler Vi kan skapa namnutrymme i en fil och få åtkomst till innehåll med ett annat program. Detta görs på följande sätt.

  • Vi måste skapa två filer. En som innehåller namnområdet och alla datamedlemmar och medlemsfunktioner vi vill använda senare.
  • Och det andra programmet kan direkt ringa det första programmet för att använda alla datamedlemmar och 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; } 

Här kan vi se att namnområdet skapas i fil1.h och värdet () för det namnområdet kallas in fil2.cpp. Kapslade namnutrymmen I C ++ kan namnutrymmen också kapslas, dvs ett namnområde inuti ett annat. Upplösningen av namnområdesvariabler är hierarkisk. 

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  

Namnområdet aliasing: I C ++ kan du använda ett aliasnamn för ditt namnutrymme för enkel användning. Befintliga namnutrymmen kan vara alias med nya namn med följande syntax:

mylive cricket
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  

Om du gillar GeeksForgeeks och vill bidra kan du också skriva en artikel med write.geeksforgeeks.org eller maila din artikel till [email protected]. Se din artikel som visas på GeeksForgeeks huvudsida och hjälpa andra nördar.