Naamruimte in C++ | Set 1 (inleiding) Naamruimte in C++ | Set 2 (naamruimte en naamruimte uitbreiden)
Verschillende manieren om toegang te krijgen tot de naamruimte: In C++ zijn er twee manieren om toegang te krijgen tot naamruimtevariabelen en -functies.
Een naamruimte definiëren:
Een naamruimtedefinitie begint als volgt met het trefwoord naamruimte, gevolgd door de naamruimtenaam:
namespace namespace_name
{
// code declarations i.e. variable (int a;)
method (void add();)
classes ( class student{};)
}
Opgemerkt moet worden dat er geen puntkomma (;) achter de accolade sluiten staat.
Om de naamruimteversie van een functie of variabele aan te roepen, plaatst u de naam van de naamruimte als volgt:
naamruimtenaam: :code; // code kan een variabele functie of klasse zijn.
javascript datum
De gebruiksrichtlijn:
U kunt ook voorkomen dat naamruimten worden voorafgegaan door de instructie 'using namespace'. Deze richtlijn vertelt de compiler dat de volgende code gebruik maakt van namen in de opgegeven naamruimte.
De naamruimte wordt dus geïmpliceerd voor de volgende code:
#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; }
Namen die in een gebruiksrichtlijn worden geïntroduceerd, voldoen aan de normale reikwijdteregels. De naam is zichtbaar vanaf het punt van de gebruiksrichtlijn tot het einde van het bereik waarin de richtlijn zich bevindt. Entiteiten met dezelfde naam gedefinieerd in een buitenste bereik zijn verborgen.
speciale tekens naam
Geneste naamruimten:
Naamruimten kunnen worden genest, waarbij u als volgt een naamruimte binnen een andere naamruimte kunt definiëren:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}
U kunt als volgt toegang krijgen tot leden van een geneste naamruimte door resolutie-operatoren te gebruiken:
// om toegang te krijgen tot leden van naamruimte_naam2
naamruimte naamruimte_naam1::naamruimte_naam2 gebruiken;
// om toegang te krijgen tot leden van naamruimte:naam1
naamruimte naamruimte_naam1 gebruiken;
Als u in de bovenstaande instructies naamruimte_naam1 gebruikt, worden elementen van naamruimte_naam2 als volgt beschikbaar in het bereik:
#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; }
1. Normale manier
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using '::' #include using namespace std; namespace geek { int rel = 300; } int main() { // variable ‘rel’ accessed // using scope resolution operator cout << geek::rel << "n"; // prints 300 return 0; }
Uitgang:
300
2. 'gebruik'-richtlijn
CPP// C++ program to demonstrate accessing of variables // in normal way i.e. using 'using' directive #include using 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 << rel << "n"; //prints 300 return 0; }
Uitgang:
tekenreeks in Java-formaat
300
Naamruimte gebruiken in headerbestanden We kunnen een naamruimte in één bestand creëren en toegang krijgen tot de inhoud met een ander programma. Dit gebeurt op de volgende manier.
- We moeten twee bestanden maken. Eén met de naamruimte en alle gegevensleden en lidfuncties die we later willen gebruiken.
- En het andere programma kan het eerste programma rechtstreeks aanroepen om alle gegevensleden en lidfuncties daarin te gebruiken.
Bestand 1
CPP// file1.h namespace foo { int value() { return 5; } }
Bestand 2
CPP// file2.cpp - Not to be executed online #include #include file1.h // Including file1 using namespace std; int main () { cout << foo::value(); return 0; }
Hier kunnen we zien dat de naamruimte is gemaakt in file1.h en dat de waarde() van die naamruimte wordt aangeroepen in file2.cpp. Geneste naamruimten In C++ kunnen naamruimten ook worden genest, d.w.z. de ene naamruimte in de andere. De resolutie van naamruimtevariabelen is hiërarchisch.
Java-lijstCPP
// 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 << out::in::val2; // prints 5 return 0; }
UITGANG:
5
Naamruimte-aliasing: In C++ kunt u voor uw gebruiksgemak een aliasnaam gebruiken voor uw naamruimtenaam. Bestaande naamruimten kunnen worden voorzien van een alias met nieuwe namen met de volgende syntaxis:
namespace new_name = current_name;CPP
#include namespace name1 { namespace name2 { namespace name3 { int var = 42; } } } // Aliasing namespace alias = name1::name2::name3; int main() { std::cout << alias::var << 'n'; }
Uitgang:
42
Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven met schrijf.geeksforgeeks.org of mail uw artikel naar [email protected]. Zie uw artikel verschijnen op de hoofdpagina van GeeksforGeeks en help andere Geeks.