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.
A névtér tehát a következő kódra vonatkozik:
próbáld elkapni java-banC++
#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; }
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;
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:
#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. Normál út
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 << geek::rel << "n"; // prints 300 return 0; }
Kimenet:
100 kmh-tól mph-ig
300
2.
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 << rel << "n"; //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
a karakterlánc megfordítása java-banCPP
// 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 << 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 << 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
#include namespace name1 { namespace name2 { namespace name3 { int var = 42; } } } // Aliasing namespace alias = name1::name2::name3; int main() { std::cout << alias::var << '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.