Az 1. beállított névtereket bevezettük az 1. beállítás alatt.
Névtér a C ++ -ban | 1. készlet (Bevezetés)
részleges differenciálódás a latexben
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:
névtér névtér_név
{{
// kódnyilatkozatok, azaz változó (int a;)
módszer (érvénytelen hozzáadás ();)
Osztályok (osztály hallgató {};)
}
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:
#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:
SYNTAX: 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; }
A globális térben egynél több névteret is létrehozhat. Ezt kétféle módon meg lehet tenni.
-
Kimenet:
-
Kimenet:
- Közvetlenül ugyanabban a programban használhatók, és az egyedi azonosítók deklarálására szolgálnak.
- A névnév neve nevezetes névtérben a névtér nyilatkozatában nem említve.
- A névtér nevét a fordító egyedileg generálja.
- A létrehozott névtelen névterek csak a fájlban érhetők el, amelyben létrehozott.
- A névtelen névterek a változók statikus deklarációjának pótlása.
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 << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
Lehetőség van két névtér -blokk létrehozására is, amelynek azonos neve van. A második névtérblokk nem más, mint az első névtér folytatása. Egyszerűbb szavakkal elmondhatjuk, hogy mindkét névter nem különböznek egymástól, hanem valójában ugyanazok, amelyeket részben meghatároznak.
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 << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
Névtelen névterek
cdr teljes formábanCPP
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
Kimenet:
300