logo

Vardų sritis C ++ | 3 rinkinys (prieiga, antraštės kūrimas, lizdas ir slapyvardis)

Vardų sritis C ++ | 1 rinkinys (įvadas) Vardų sritis C ++ | 2 rinkinys (vardų srities išplėtimas ir bevardžių vardų sritis)

s python

Skirtingi būdai, kaip pasiekti vardų sritį: C ++ yra du būdai, kaip pasiekti vardų srities kintamuosius ir funkcijas.



Vardų srities apibrėžimas:

Vardų srities apibrėžimas prasideda nuo raktinių žodžių vardų srities, po kurios vardų sritis yra tokia:

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

Reikia pažymėti, kad po uždarymo petnešos nėra kabliataškio (;).
Norėdami paskambinti į vardų srities funkciją, arba kintamąjį, iš anksto iš anksto pavadinti vardų vardą taip:
vardųpace_name :: kodas;  // kodas gali būti kintama funkcija arba klasė.



Naudojama direktyva:

Taip pat galite vengti vardų erdvių rengimo naudodamiesi vardų srities direktyva. Ši direktyva sako kompiliatoriui, kad vėlesnis kodas naudoja vardus nurodytoje vardų srityje. 
Taigi vardų sritis yra numanoma šiam kodui:

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

Pavadinimai, įvesti naudojant direktyvoje, klostosi normalios apimties taisyklės. Pavadinimas matomas nuo naudojimo direktyvo taško iki apimties, kurioje randama direktyva, pabaigą. Slėpimo subjektai su tuo pačiu pavadinimu, apibrėžta išorine apimtimi, yra paslėpti.



Įdėtos vardų erdvės:

Vardų sritis galima įdėti ten, kur galite apibrėžti vieną vardų sritį kitos vardų erdvėje taip:

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

Naudodamiesi rezoliucijos operatoriais galite pasiekti įterptų vardų srities narius taip:
// Norėdami pasiekti „Namespace_name2“ narius
NAMESpace Namespace_name1 :: vardųpace_name2;
// Norėdami patekti į vardų srities narius: vardas1
vardų srities vardų sritis_name1 naudojimas;


Aukščiau pateiktuose teiginiuose, jei naudojate vardųpace_name1

Java pavadinimų sutartys
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. Normalus būdas  

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

Išvestis:

300  

2. 'Naudojant' direktyvą  

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

Išvestis:

java jungiklio dėklas
300  

Antraštės failų vardų srities naudojimas Mes galime sukurti vardų sritį viename faile ir prieigos prie turinio naudodami kitą programą. Tai daroma taip.

  • Turime sukurti du failus. Viena, kurioje yra vardų sritis, ir visos duomenų narių bei narių funkcijos, kurias norime naudoti vėliau.
  • O kita programa gali tiesiogiai iškviesti pirmąją programą, kurioje naudojami visi duomenų nariai ir narių funkcijos.

1 byla  

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

2 byla  

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

Čia matome, kad vardų sritis yra sukurta file1.h, o tos vardų srities vertė () yra vadinama FILE2.CPP. Įdėtos vardų erdvės „C ++“ vardų srityse taip pat gali būti įdėta, t. Y. Viena vardų sritis kitoje. Vardų srities kintamųjų skiriamoji geba yra hierarchinė. 

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

Išvestis:

5  

Vardų srities slapyvardis: „C ++“ galite naudoti savo vardų srities pavadinimą, kad būtų lengviau naudoti. Esamos vardų erdvės gali būti slapyvardžiai su naujais vardais su tokia sintakse:

eilutę palyginkite java
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'; } 

Išvestis:

42  

Jei jums patinka „Geeksforgeeks“ ir norėtumėte prisidėti, taip pat galite parašyti straipsnį naudodami Rašykite.geeksforgeeks.org Arba atsiųskite savo straipsnį adresu reciaw [email protected]. Peržiūrėkite savo straipsnį, rodomą pagrindiniame „GeeksforGeeks“ puslapyje ir padėkite kitiems geiksmetrams.