Vi har introdusert navneområder under sett 1.
Navnområde i C ++ | Sett 1 (introduksjon)
sorter arrayliste
Definere et navneområde:
Et navneområdedefinisjon begynner med nøkkelordet navneområdet etterfulgt av navneområdet navn som følger:
namespace namespace_name
{
// kode erklæringer, dvs. variabel (int a;)
Metode (void add ();)
Klasser (klassestudent {};)
}
Det skal bemerkes at det ikke er noen semikolon (;) etter avsluttende stag.
For å ringe navneområdet-aktivert versjon av enten funksjon eller variabel prepend navneområdet navn som følger:
namespace_name :: kode; // kode kan være variabel funksjon eller klasse.
Bruksdirektivet:
Du kan også unngå prepending av navneområder med bruk av navneområdet. Dette direktivet forteller kompilatoren at den påfølgende koden benytter seg av navn i det spesifiserte navneområdet.
Navnområdet er således underforstått for følgende kode:
#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; }
Navn introdusert i et bruk av direktiv adlyder normale omfangsregler. Navnet er synlig fra punktet i bruksdirektivet til slutten av omfanget som direktivet er funnet. Enheter med samme navn definert i et ytre omfang er skjult.
Nestede navneområder:
Navneområder kan nestes der du kan definere ett navneområde inne i et annet navnområde som følger:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Du kan få tilgang til medlemmer av nestet navneområde ved å bruke oppløsningsoperatører som følger:
// for å få tilgang til medlemmer av namespace_name2
ved hjelp av navneområde navnepace_name1 :: namespace_name2;
// for å få tilgang til medlemmer av navneområdet: name1
ved hjelp av navneområdet navneområde_navn1;
I ovennevnte utsagn hvis du bruker namespace_name1, vil det gjøre elementer av navnepace_name2 tilgjengelig i omfanget som følger:
#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; }
Det er også mulig å lage mer enn ett navnefelt i det globale rommet. Dette kan gjøres på to måter.
-
Produksjon:
-
Produksjon:
- De er direkte brukbare i samme program og brukes til å erklære unike identifikatorer.
- I ikke navngitte navneområder navn på navneområdet i ikke nevnt i erklæringen om navneområde.
- Navnet på navneområdet genereres unikt av kompilatoren.
- De ikke navngitte navneområdene du har opprettet, vil bare være tilgjengelig i filen du opprettet den i.
- Ikke navngitte navnefelt er erstatningen for den statiske variabelen.
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
Det er også mulig å lage to navneblokker med samme navn. Den andre navneområdet er ingenting annet enn å fortsette det første navneområdet. Med enklere ord kan vi si at begge navneområdene ikke er forskjellige, men faktisk det samme som er definert i deler.
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
Ikke navngitte navneområder
// 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; }
Produksjon:
300