namespaces c
En komplet oversigt over navneområder i C ++ med enkle eksempler.
Indtil videre i vores tidligere tutorials har vi set alt om variabler, erklæringer, funktioner og andre sådanne enheder, der er brugt i C ++.
Mens der udvikles applikationer i C ++, kan der opstå nogle specielle situationer som de samme variabelnavne, der bruges to gange eller funktioner defineret med samme prototyper osv. Når disse scenarier opstår, bliver det vanskeligt for compileren at udlede den korrekte variabel eller funktionsopkald, der giver anledning til tvetydighed .
=> Tjek den perfekte C ++ træningsvejledning her.
Hvad du lærer:
- Hvad er navneområde?
- Definition af et navneområde
- Adgang til navneområdet medlemmer
- Brugsdirektivet
- Indlejrede navneområder
- Eksterne navneområder
- Tilstødende navneområder
- Konklusion
- Anbefalet læsning
Hvad er navneområde?
Lad os se nedenstående eksempel:
#include #include int main() { int var; double var; std::cin>>var; }
Produktion:
I funktion 'int main ()':
8:10: fejl: modstridende erklæring 'dobbelt var'
7: 7: note: tidligere erklæring som 'int var'
I ovenstående eksempel har vi defineret to variabler med forskellige typer, men samme identifikator. Så når vi kompilerer dette eksempel, får vi en fejl som vist i Output-vinduet. Disse modstridende erklæringer opstår på grund af at den samme identifikator bruges til at navngive to variabler.
Denne type situationer giver anledning til tvetydighed i applikationer.
C ++ introducerer noget kaldet “ navneområder ”For at løse dette problem. Navneområdet i C ++ er ligesom en pakke eller en region eller et bibliotek, der bruges til at skelne mellem variablen eller funktionerne med de samme identifikatorer.
Et navneområde kan indeholde variabler, funktioner, klasser eller andre objekter og endda et andet navneområde. Hvert medlem af navneområdet kan henvises til ved hjælp af et navneområde. Dette hjælper kompilatoren med at skelne mellem forskellige programmeringsenheder, selvom de har de samme navne.
Definition af et navneområde
I C ++ kan vi definere et navneområde ved hjælp af nøgleordet “ navneområde ”Som vist nedenfor:
namespace namespace_name{ namespace_declarations; }
Så hvis vi har brug for at definere et navneområde med navnet “test_space”, kan vi gøre det som nedenfor:
forskel mellem whitebox og blackbox test
namespace test_space{ int var=10; }
Ovenstående erklæring definerer et navneområde med navnet “test_space”. Som vist har den et heltal variabel var som dens medlem.
Adgang til navneområdet medlemmer
Nu har vi defineret vores eget navneområde “test_space”, og hvordan får vi adgang til indholdet af dette navneområde?
I C ++ - programmet kan vi få adgang til medlemmerne af navneområdet ved hjælp af syntaksen:
namespace_name::namespace_member;
Hele talvariablen var, der er angivet i navneområdet 'test_space' ovenfor, kan således fås som følger:
test_space::var;
Se det komplette eksempel nedenfor for at demonstrere navneområder og dets anvendelse.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Produktion:
lokal var = 20,53
test_space :: var = 10
Vi har demonstreret alt om oprettelse og adgang til navneområde i ovenstående programmeringseksempel. Som vi ser er “test_space” et navneområde, som vi har defineret. Den har en enkelt heltalvariabel, der er defineret i den. Så i hovedfunktionen har vi en anden dobbeltvariabel var, der initialiseres.
Senere viser vi begge disse variabler. Bemærk, at mens den lokale dobbelte variabel inde i hoveddelen kan udskrives direkte, skal vi forud for den med navneområdets navn for at udskrive variablen med navneområdet.
Dette har også taget sig af problemet med sammenstød mellem variablerne på grund af de samme navne, som vi diskuterede tidligere.
Brugsdirektivet
I vores forrige emne så vi, at vi kan få adgang til namespace-medlemmer ved hjælp af namespace_name :: namespace_member.
Hvis vi ikke ønsker at angive et navnefeltnavn overalt i programmet, kan vi gøre brug af “ ved brug af ”Direktiv om at inkludere navneområdet i programmet.
Dette gøres som følger:
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< Produktion:
lokal var = 20,53
test_space :: var = 10
I ovenstående eksempel har vi brugt to udsagn efter at have defineret navneområdet “test_space”.
Disse er:
using namespace std; using namespace test_space;
Den første erklæring bruger erklæringen til at få adgang til navneområdet 'std', som er et foruddefineret standardnavneområde i C ++ - biblioteket. Dette navneområde bruges til at få adgang til forskellige funktioner som cin, cout osv.
Den anden sætning bruges til at inkludere “test_space” navneområde i programmet.
I hovedfunktionen kan vi se, at funktionerne som cout og variabel var ikke behøver at være forud for et navneområdet. Vi kan direkte henvise til dem. Men da var har et navnekollision med en lokal variabel i hovedfunktionen, henviser vi det ved hjælp af omfangsopløsningsoperatoren (: :), da navneområder også altid har et globalt omfang.
Indlejrede navneområder
C ++ tillader også at have indlejrede navneområder, dvs. et navneområde defineret i et andet navneområde.
Den generelle syntaks for indlejrede navneområder er som følger:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Hvis vi har brug for adgang til ns2_code, kan vi få adgang til det som følger:
bedste youtube video downloader til pc
ns1::ns2::ns2_code;
Lad os demonstrere de indlejrede navneområder ved hjælp af følgende kodeeksempel.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; using namespace first::second; int main() { double var = 20.53; cout<<'local var = '< Produktion:
lokal var = 20,53
først :: var = 10
andet :: var = 20
Vi har brugt indlejrede navneområder i ovenstående program. Bemærk, hvordan brugen af direktivet bruges til at få adgang til navneområder. Det er ikke nok kun at henvise det inderste navneområde én gang. Hvis vi har brug for en kode fra det yderste navneområde, skal vi henvise den separat.
Vi kan bruge et andet navn til navneområder kendt som et 'alias'. Dette er især nyttigt, når du bruger indlejrede navneområder, og indlejringsgraden er høj.
Vi kan demonstrere aliaset for et navneområde ved at ændre ovenstående eksempel.
#include #include namespace first{ int var = 10; namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Produktion:
lokal var = 20,53
først :: var = 10
andet :: var = 20
Bemærk aliaset indlejret, der er defineret for navneområdet først :: andet. Når et alias er defineret, kan vi derefter henvise til navneområdet ved hjælp af et aliasnavn.
Eksterne navneområder
Nogle gange, når vi har for mange navneområder til at bruge i vores applikation, vil vi måske placere alle navneområderne i en separat fil. Dette kan let gøres. Når navneområderne er i den separate fil, inkluderer vi bare den fil i vores program og bruger derefter direkte navneområderne og dens indhold i vores program.
For eksempel, hvis vi har en fil med navnet ns.h, der indeholder følgende navneområde.
//ns.h namespace first{ int var = 25; }
Nu i vores program kan vi bruge navneområdet 'først' som følger:
#include #include “ns.h” using namespace std; int main() { cout<Så når vi først har inkluderet filen, der indeholder navneområder i vores program, kan vi bruge navneområderne, som om den blev erklæret globalt i det samme program.
Tilstødende navneområder
C ++ giver os også mulighed for at definere noget kaldet sammenhængende navneområder. Tilstødende navneområder er de navneområder, der defineres mere end én gang ved at have det samme navn. I virkeligheden er dette ikke separate navneområder, men udvidelser af det samme navneområde.
Tilstødende navneområder er tydelige i nedenstående eksempel.
#include #include . namespace first{ int var = 10; } namespace first{ namespace second{ int secVar = 20; } } using namespace std; using namespace first; namespace nested = first::second; int main() { double var = 20.53; cout<<'local var = '< Produktion:
lokal var = 20,53
først :: var = 10
andet :: var = 20
Bemærk i ovenstående eksempel, at vi har defineret det samme navneområde to gange. I den første definition har vi en variabel med navnet var. Mens vi i den anden erklæring har defineret et andet navneområde.
I hovedfunktionen har vi adgang til medlemmerne af det ydre såvel som det indre navneområde og bemærker, at medlemmerne er let tilgængelige.
Dette er eksemplet på sammenhængende navneområder, som også undertiden er kendt som 'diskontinuerlige navneområder'. Deres definitioner vises separate, men i virkeligheden er de kontinuerlige navneområder.
Konklusion
Med dette er vi kommet til slutningen af denne tutorial om navneområder i C ++. Navneområder på en måde, der giver os mulighed for at adskille vores kode i forskellige rum eller regioner, så vi har klarhed i læsning af den og også i brugen af dens medlemmer.
hvordan man åbner et nyt projekt i formørkelse
I vores efterfølgende tutorials lærer vi mere om de forskellige grundlæggende emner i C ++ som undtagelseshåndtering, filinput / output osv.
=> Tjek her for at se AZ af C ++ træningsvejledninger her.
Anbefalet læsning
- Bedste GRATIS C # tutorialsserie: Den ultimative C # guide til begyndere
- Load Testing med HP LoadRunner-vejledninger
- Biblioteksfunktioner i C ++
- 70+ BEST C ++ tutorials til at lære C ++ programmering GRATIS
- Objektorienteret programmering i C ++
- Initialiseringslister i C ++
- Iteratorer i STL
- Indkapsling i C ++