Névtér a C ++ -ban | 3. beállítás (Hozzáférés, fejléc létrehozása, fészkelés és álnév)
Névtér a C ++ -ban | 1. készlet (Bevezetés) Névtér a C ++ -ban | 2. beállítás (névtér és névtelen névtér kiterjesztése)
A névtér elérésének különböző módjai: A C ++ -ban kétféle módon lehet hozzáférni a névtér -változókhoz és a funkciókhoz.
Névtér meghatározása:
A névtér -meghatározás a kulcsszó névtérrel kezdődik, amelyet a névtér név követ, az alábbiak szerint:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}Meg kell jegyezni, hogy a záró zárójel után nincs félig (;).
A függvény vagy a változó névtér-kompatibilis verziójának hívásához az alábbiak szerint készítse el a névtér nevét:
NAMPACE_NAME :: kód; // A kód lehet változó funkció vagy osztály.Az irányelv használata:
Kerülheti a névterek előkészítését a névtér -irányelv használatával. Ez az irányelv azt mondja a fordítónak, hogy a következő kód a neveket használja a megadott névtérben.
C++
A névtér tehát a következő kódra vonatkozik:#includeusing 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 ; } Az irányelvben bevezetett nevek betartják a normál hatályszabályokat. A név látható a használati irányelv pontjától annak a hatókörnek a végéig, amelyben az irányelv megtalálható. A külső hatókörben meghatározott azonos nevű entitások rejtve vannak.
Beágyazott névterek:
A névterek beágyazhatók, ahol az egyik névtér meghatározhatja a másik névtérben a következőket:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}A beágyazott névtér tagjait a következő:
// A NAMPACE_NAME2 tagjainak hozzáférése
névtér használata a namesspace_name1 :: namesspace_name2;
// A névtér tagjainak hozzáférése: név1
névtér használata a névtér_name1;C++
A fenti állításokban, ha a Namesspace_NAME1 -et használja, akkor a NameSpace_NAME2 elemeit a következőképpen elérhetővé teszi:#includeusing 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ál út
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #includeusing 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 ; } Kimenet:
300
2.
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #includeusing 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 ; } Kimenet:
300
Névtér használata a fejléc fájlokban Az egyik fájlban létrehozhatunk névteret, és egy másik program segítségével hozzáférhetünk. Ez a következő módon történik.
- Két fájlt kell létrehoznunk. Az egyik tartalmazza a névteret, valamint az összes adattagot és tagfunkciót, amelyet később használni akarunk.
- És a másik program közvetlenül felhívhatja az első programot, hogy az összes adattag és a tag funkciót használja.
1. fájl
CPP // file1.h namespace foo { int value () { return 5 ; } }
2. fájl
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 ; }
Itt láthatjuk, hogy a névtér a File1.h fájlban jön létre, és a névtér értéke () meghívja a File2.cpp fájlt. Beágyazott névterek A C ++ névterek beágyazhatók, azaz az egyik névtér a másikban. A névtér -változók felbontása hierarchikus.
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 ; }
Kimenet:
5
Névtér álnevezés: A C ++ -ban a névtér nevéhez álnévnevet használhat a könnyű használathoz. A meglévő névterek új nevekkel álcázhatók a következő szintaxissal:
namespace new_name = current_name;
CPP#includenamespace 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' ; } Kimenet:
42
Ha szereti a geeksforgeeks -t, és szeretne hozzájárulni, akkor is írhat egy cikket is write.geekkforgeeks.org Vagy küldje el a cikkét a [email protected] címre. Lásd a cikkét, amely megjelenik a Geeksforgeeks főoldalán, és segítsen más geeksnek.