Namespace v C ++ | Set 2 (rozšírenie menného priestoru a nemenovaný názvový priestor)
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 & lt ; & lt ; first :: func () & lt ; & lt ; & quot ; n & quot ;; cout & lt ; & lt ; second :: func () & lt ; & lt ; & quot ; n & quot ;; 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 & lt ; & lt ; first :: val1 & lt ; & lt ; & quot ; n & quot ;; cout & lt ; & lt ; first :: val2 & lt ; & lt ; & quot ; n & quot ;; 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 & lt ; & lt ; rel & lt ; & lt ; & quot ; n & quot ;; // prints 300 return 0 ; }
Výstup:
300
Mohlo By Sa Vám Páčiť
Najlepšie Články
Kategórie
Zaujímavé Články