Vi har introducerat namnutrymmen i nedanstående uppsättning 1.
Namnområdet i C ++ | Set 1 (introduktion)
Definiera ett namnområde:
En definition av namnområdet börjar med nyckelordens namnområde följt av namnområdet på följande sätt:
om annat i java
namnutrymme namnutrymme_name
{
// Koddeklarationer, dvs variabel (int a;)
Metod (void add ();)
Klasser (klasstudent {};)
}
Det bör noteras att det inte finns någon semikolon (;) efter den avslutande staget.
För att ringa den namnutrymme-aktiverade versionen av antingen funktion eller variabel förbereda namnutrymmet på följande sätt:
NAMESPACE_NAME :: kod; // Kod kan vara variabel funktion eller klass.
Det användande direktivet:
Du kan också undvika att förbereda namnutrymmen med namnutrymmet. Detta direktiv berättar för kompilatorn att den efterföljande koden använder namn i det angivna namnområdet.
Namnområdet är således underförstått för följande kod:
#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; }
Namn som introducerats i ett som använder direktivet följer regler för normala omfattning. Namnet är synligt från punkten för att använda direktivet till slutet av omfattningen som direktivet finns. Enheter med samma namn som definieras i ett yttre omfattning är dolda.
Kapslade namnutrymmen:
Namnområden kan kapslas där du kan definiera ett namnområde i ett annat namnutrymme enligt följande:
java arraylist metoder
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Du kan komma åt medlemmar i kapslade namnområden genom att använda upplösningsoperatörer enligt följande:
// för att få åtkomst till medlemmar i namnutrymmet_name2
Använda namnutrymme NAMESPACE_NAME1 :: NAMESPACE_NAME2;
// för att få åtkomst till medlemmar i namnområdet: NAME1
Använda namnutrymme Namespace_Name1;
I ovanstående uttalanden om du använder namnutrymme_name1 kommer det att göra element av namnutrymme_name2 tillgängliga i omfattningen enligt följande:
#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 är också möjligt att skapa mer än ett namnutrymme i det globala utrymmet. Detta kan göras på två sätt.
-
Produktion:
-
Produktion:
- De är direkt användbara i samma program och används för att förklara unika identifierare.
- I namngivna namnutrymmen namnet på namnområdet i inte nämnt i deklarationen av namnområdet.
- Namnet på namnområdet genereras unikt av kompilatorn.
- De namngivna namnutrymmen du har skapat kommer bara att vara tillgänglig i den fil du skapade den i.
- Namnlösa namnutrymmen är ersättningen för den statiska variablens deklaration.
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 är också möjligt att skapa två namnutrymme som har samma namn. Det andra namnutrymmet är ingenting men faktiskt fortsättningen av första namnområdet. Med enklare ord kan vi säga att båda namnutrymmen inte är olika men faktiskt samma som definieras i delar.
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
Namnlösa namnutrymmen
java 8CPP
// 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; }
Produktion:
300