Zaviedli sme názvové priestory do nižšie uvedenej sady 1.
Namespace v C ++ | Sada 1 (Úvod)
Definovanie menného priestoru:
Definícia názvového priestoru začína pomocou názvového priestoru kľúčového slova, po ktorom nasleduje názov menného priestoru takto:
názvový priestor názvu namespace_name
{
// Deklarácie kódu, t.j. premenná (int a;)
metóda (void add ();)
triedy (študent triedy {};)
}
Je potrebné poznamenať, že po záverečnej ortéze neexistuje žiadny bodkočiar (;).
Ak chcete zavolať verziu funkcie s povolením menného priestoru, alebo premennú názov menného priestoru nasledovne:
namespace_name :: code; // Kód by mohol byť variabilná funkcia alebo trieda.
Použitie smernice:
Môžete sa tiež vyhnúť prípravám menných priestorov pomocou smernice používania menného priestoru. Táto smernica hovorí kompilátorovi, že nasledujúci kód využíva názvy v určenom priestore názvov.
Názov je teda predpokladaný pre nasledujúci kód:
#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; }
Mená zavedené v použití smernice dodržiavajú pravidlá normálneho rozsahu. Názov je viditeľný od bodu použitia smernice do konca rozsahu, v ktorom sa nachádza smernica. Entity s rovnakým názvom definované vo vonkajšom rozsahu sú skryté.
Vnorené menné priestory:
Menové priestory môžu byť vnorené tam, kde môžete definovať jeden menný priestor v inom priestore mena nasledovne:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Môžete mať prístup k členom vnoreného menného priestoru pomocou operátorov rozlíšenia takto:
// na prístup k členom mennej espace_name2
Použitie namespace namespace_name1 :: namespace_name2;
// na prístup k členom menného priestoru: name1
Použitie namespace namespace_name1;
Vo vyššie uvedených príkazoch Ak používate namespace_name1, sprístupní prvky menného priestoru_name2 v rozsahu nasledovne:
#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; }
V globálnom priestore je tiež možné vytvoriť viac ako jeden menný priestor. To sa dá urobiť dvoma spôsobmi.
-
Výstup:
-
Výstup:
- Sú priamo použiteľné v rovnakom programe a používajú sa na vyhlásenie jedinečných identifikátorov.
- V nemenovaných názvových priestoroch názov menného priestoru, ktorý nebol uvedený v Deklarácii menného priestoru.
- Názov menného priestoru je jedinečne generovaný kompilátorom.
- Nemenované názvové priestory, ktoré ste vytvorili, budú prístupné iba v rámci súboru, v ktorom ste ho vytvorili.
- Nemenované menné priestory sú náhradou za statické vyhlásenie premenných.
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
Je tiež možné vytvoriť dva bloky menného priestoru s rovnakým názvom. Druhý blok menného priestoru nie je nič iné ako v skutočnosti pokračovanie prvého priestoru menného priestoru. Zjednodušenými slovami môžeme povedať, že oba menné priestory sa nelíšia, ale v skutočnosti to isté, ktoré sa definujú v častiach.
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
Nemenované menné priestory
// 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; }
Výstup:
300