imenski prostor v C ++ | Set 2 (razširitev imenskega prostora in neimenovani imenski prostor)
Spodaj smo uvedli imenske prostore.
Imenski prostor v C ++ | Set 1 (Uvod)
Določitev imenskega prostora:
Opredelitev imenskega prostora se začne s ključnim imenskim prostorom, ki mu sledi ime imenskega prostora na naslednji način:
IMESPACE IMESPACE_NAME
{
// kode izjave, tj. Spremenljivka (int a;)
metoda (void add ();)
Razredi (razred študent {};)
}
Opozoriti je treba, da po zaključni naramnici ni podpičja (;).
Če želite poklicati različico funkcije ali spremenljivke, ki podpira ime imena, predvidite ime imenskega prostora na naslednji način:
Namespace_name :: koda; // koda je lahko spremenljiva funkcija ali razred.
Direktiva o uporabi:
Prav tako se lahko izognete prednastavitvi imenskih prostorov z direktivo o uporabi imenskega prostora. Ta direktiva pripovedovalcu pove, da naslednja koda uporablja imena v določenem imenskem prostoru.
Imen prostor je tako nakazan za naslednjo kodo:
#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 ; }
Imena, uvedena v uporabi direktive, upoštevajte normalno pravila obsega. Ime je vidno od točke direktive o uporabi do konca obsega, v katerem se najde direktiva. Entitete z istim imenom, opredeljene v zunanjem obsegu, so skrite.
Gnezdeni prostori za ime:
Imenske prostore lahko gnezdite tam, kjer lahko določite en prostor imena znotraj drugega prostora imena na naslednji način:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Do članov gnezdenega imenskega prostora lahko dostopate tako, da uporabite operaterje ločljivosti na naslednji način:
// Za dostop do članov imena imena2
z uporabo imenskega prostora imespace_name1 :: imespace_name2;
// Za dostop do članov imenskega prostora: ime1
z uporabo imenskega prostora imespace_name1;
V zgornjih izjavah, če uporabljate Namespace_Name1, bo v obsegu na voljo elemente Namespace_name2, kot sledi:
#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 svetovnem prostoru je mogoče ustvariti tudi več kot en prostore imena. To je mogoče storiti na dva načina.
-
Izhod:
-
Izhod:
- V istem programu so neposredno uporabne in se uporabljajo za razglasitev edinstvenih identifikatorjev.
- V neimenovanem imenu imena imena v imenici, ki ni omenjen v deklaraciji imenskega prostora.
- Ime imenskega prostora edinstveno ustvarja prevajalnik.
- Neimenovani imenski prostori, ki ste jih ustvarili, bodo dostopni le v datoteki, v kateri ste jo ustvarili.
- Neimenovani imenski prostori so zamenjava za statično deklaracijo spremenljivk.
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
Prav tako je mogoče ustvariti dva bloka imenskega prostora z istoimenskim imenom. Drugi blok imenskega prostora ni nič drugega kot dejansko nadaljevanje prvega imenskega prostora. Z enostavnejšimi besedami lahko rečemo, da oba prostora imena nista različna, ampak dejansko enaka, ki sta opredeljena v delih.
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
Neimenovani imenski prostori
// 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 ; }
Izhod:
300