Navnområde i C ++ | Sett 3 (tilgang, lage header, hekkende og aliasing)
Navnområde i C ++ | Sett 1 (introduksjon) Navnområde i C ++ | Sett 2 (utvide navneområdet og ikke navngitt navneområde)
Ulike måter å få tilgang til navneområde på: I C ++ er det to måter å få tilgang til navneområder og funksjoner.
Definere et navneområde:
Et navneområdedefinisjon begynner med nøkkelordet navneområdet etterfulgt av navneområdet navn som følger:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}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.
C++
Navnområdet er således underforstått for følgende kode:#includeusing 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:
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;C++
I ovennevnte utsagn hvis du bruker namespace_name1, vil det gjøre elementer av navnepace_name2 tilgjengelig i omfanget som følger:#includeusing 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 ; } 1. Normal måte
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #includeusing namespace std ; namespace geek { int rel = 300 ; } int main () { // variable ‘rel’ accessed // using scope resolution operator cout & lt ; & lt ; geek :: rel & lt ; & lt ; & quot ; n & quot ;; // prints 300 return 0 ; } Utgang:
300
2. 'Bruke' direktiv
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #includeusing namespace std ; namespace geek { int rel = 300 ; } // use of ‘using’ directive using namespace geek ; int main () { // variable ‘rel’ accessed // without using scope resolution variable cout & lt ; & lt ; rel & lt ; & lt ; & quot ; n & quot ;; //prints 300 return 0 ; } Produksjon:
300
Bruke navneområde i overskriftsfiler Vi kan opprette navneområde i en fil og få tilgang til innhold ved hjelp av et annet program. Dette gjøres på følgende måte.
- Vi må lage to filer. En som inneholder navneområdet og alle datamedlemmer og medlemsfunksjoner vi ønsker å bruke senere.
- Og det andre programmet kan direkte ringe det første programmet for å bruke alle datamedlemmer og medlemsfunksjoner i det.
Fil 1
CPP // file1.h namespace foo { int value () { return 5 ; } }
Fil 2
CPP // file2.cpp - Not to be executed online #include #include file1.h // Including file1 using namespace std ; int main () { cout & lt ; & lt ; foo :: value (); return 0 ; }
Her kan vi se at navneområdet er opprettet i File1.h og verdien () for det navneområdet blir kalt i File2.cpp. Nestede navneområder I C ++ kan navneområder også nestes, dvs. et navneområde inne i et annet. Oppløsningen av navnefeltvariabler er hierarkisk.
CPP // C++ program to demonstrate nesting of namespaces #include using namespace std ; // Nested namespace namespace out { int val = 5 ; namespace in { int val2 = val ; } } // Driver code int main () { cout & lt ; & lt ; out :: in :: val2 ; // prints 5 return 0 ; }
Utgang:
5
Navneområde aliasing: I C ++ kan du bruke et aliasnavn for navneområdet ditt for brukervennlighet. Eksisterende navneområder kan være aliased med nye navn med følgende syntaks:
namespace new_name = current_name;
CPP#includenamespace name1 { namespace name2 { namespace name3 { int var = 42 ; } } } // Aliasing namespace alias = name1 :: name2 :: name3 ; int main () { std :: cout & lt ; & lt ; alias :: var & lt ; & lt ; 'n' ; } Utgang:
42
Hvis du liker geeksforgeeks og ønsker å bidra, kan du også skrive en artikkel ved hjelp av skriv.geeksforgeeks.org eller send artikkelen din til å gjennomgå [email protected]. Se artikkelen din som vises på GeeksForgeeks hovedside og hjelpe andre nørder.