namespaces c
En komplett oversikt over navneområder i C ++ med enkle eksempler.
Så langt i våre tidligere veiledninger har vi sett alt om variabler, erklæringer, funksjoner og andre slike enheter som brukes i C ++.
Mens du utvikler applikasjoner i C ++, kan det oppstå spesielle situasjoner som samme variabelnavn som brukes to ganger eller funksjoner definert med samme prototyper osv. Når disse scenariene oppstår, blir det vanskelig for kompilatoren å utlede riktig variabel eller funksjonsanrop som gir opphav til tvetydighet. .
=> Sjekk ut den perfekte C ++ treningsguiden her.
Hva du vil lære:
b-tre vs b + tre
- Hva er navneplass?
- Definere et navneområde
- Få tilgang til navneområdemedlemmer
- Bruksdirektivet
- Nestede navneområder
- Eksterne navneområder
- Sammenhengende navnerom
- Konklusjon
- Anbefalt lesing
Hva er navneplass?
La eksempelet nedenfor se:
#include #include int main() { int var; double var; std::cin>>var; }
Produksjon:
I funksjon ‘int main ()’:
8:10: feil: motstridende erklæring ‘dobbel var’
7: 7: merknad: forrige erklæring som ‘int var’
I eksemplet ovenfor har vi definert to variabler med forskjellige typer, men samme identifikator. Så når vi kompilerer dette eksemplet, får vi en feil som vist i Output-vinduet. Disse motstridende erklæringene oppstår på grunn av at den samme identifikatoren brukes til å nevne to variabler.
Denne typen situasjoner gir opphav til tvetydighet i applikasjoner.
C ++ introduserer noe som heter “ navnerom ”For å løse dette problemet. Navneområdet i C ++ er akkurat som en pakke eller en region eller et bibliotek som brukes til å skille mellom variabelen eller funksjonene med samme identifikatorer.
Et navneområde kan inneholde variabler, funksjoner, klasser eller andre objekter og til og med et annet navneområde. Hvert medlem av navneområdet kan henvises til ved hjelp av et navneområde. Dette hjelper kompilatoren til å skille mellom forskjellige programmeringsenheter, selv om de har samme navn.
Definere et navneområde
I C ++ kan vi definere et navneområde ved hjelp av nøkkelordet “ navneområdet ' som vist under:
namespace namespace_name{ namespace_declarations; }
Så hvis vi trenger å definere et navneområde som heter 'test_space', kan vi gjøre det som nedenfor:
namespace test_space{ int var=10; }
Ovennevnte erklæring definerer et navneområde som heter “test_space”. Som vist har den et heltallvariabel var som medlemmet.
Få tilgang til navneområdemedlemmer
Nå har vi definert vårt eget navneområde “test_space” og hvordan får vi tilgang til innholdet i dette navneområdet?
I C ++ - programmet kan vi få tilgang til medlemmene i navneområdet ved hjelp av syntaksen:
namespace_name::namespace_member;
Dermed kan du få tilgang til heltallvariablen var som er angitt i navneområdet 'test_space' ovenfor:
test_space::var;
Se hele eksemplet nedenfor for å demonstrere navneområder og bruken av dem.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Produksjon:
lokal var = 20,53
hva er en god e-posttjeneste
test_space::var = 10
Vi har demonstrert alt om å opprette og få tilgang til navneområdet i ovenstående programmeringseksempel. Som vi ser er “test_space” et navneområde som vi har definert. Den har en enkelt heltallvariabel var definert i den. Så i hovedfunksjonen har vi en annen dobbel variabel var som er initialisert.
Senere viser vi begge disse variablene. Vær oppmerksom på at mens den lokale dobbeltvariabelen i hoveddelen kan skrives ut direkte, må vi gå foran navnet på navneområdet for å skrive ut variabel for navneområdet.
Dette har også tatt vare på problemet med sammenstøt mellom variablene på grunn av de samme navnene som vi diskuterte tidligere.
Bruksdirektivet
I vårt forrige emne så vi at vi kan få tilgang til navneområdemedlemmer ved hjelp av navneområdet_navn :: navnområdet_medlem.
Hvis vi ikke ønsker å spesifisere et navnefeltnavn overalt i programmet, kan vi bruke “ ved hjelp av ”-Direktivet for å inkludere navneområdet i programmet.
Dette gjø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 = '< Produksjon:
lokal var = 20,53
test_space::var = 10
I eksemplet ovenfor har vi brukt to setninger etter å ha definert navneområdet “test_space”.
Disse er:
using namespace std; using namespace test_space;
Den første setningen bruker erklæringen for å få tilgang til navneområdet 'std', som er et forhåndsdefinert standard navneområde i C ++ - biblioteket. Dette navneområdet brukes til å få tilgang til forskjellige funksjoner som cin, cout, etc.
Den andre setningen brukes til å inkludere “test_space” -navnet i programmet.
I hovedfunksjonen kan vi se at funksjonene som cout og variabel var ikke trenger å gå foran et navnerom. Vi kan direkte henvise til dem. Men ettersom var har et navnekollisjon med en lokal variabel i hovedfunksjonen, refererer vi til den ved bruk av omfangsoppløsningsoperatoren (: :) da navneplasser også alltid har et globalt omfang.
Nestede navneområder
C ++ tillater også å ha nestede navneområder, dvs. et navneområde som er definert i et annet navneområde.
Den generelle syntaksen for nestede navneområder er som følger:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Hvis vi trenger tilgang til ns2_code, kan vi få tilgang til den som følger:
ns1::ns2::ns2_code;
La oss demonstrere de nestede navneområdene ved hjelp av 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 = '< Produksjon:
lokal var = 20,53
først :: var = 10
andre :: var = 20
Vi har brukt nestede navneområder i programmet ovenfor. Vær oppmerksom på hvordan bruken av direktivet brukes for å få tilgang til navneområder. Det er ikke nok å bare henvise det innerste navneområdet en gang. Hvis vi trenger en kode fra det ytterste navnområdet, må vi henvise den separat.
Vi kan bruke et annet navn for navneområder kjent som et 'alias'. Dette er spesielt nyttig når du bruker nestede navneområder, og graden av hekking er høy.
Vi kan demonstrere aliaset for et navneområde ved å endre eksemplet ovenfor.
#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 = '< Produksjon:
grep-kommando i unix shell-skript
lokal var = 20,53
først :: var = 10
andre :: var = 20
Legg merke til aliaset som er nestet som er definert for navneområdet først :: andre. Når et alias er definert, kan vi referere til navneområdet ved hjelp av et aliasnavn.
Eksterne navneområder
Noen ganger når vi har for mange navnerom til å bruke i applikasjonen vår, kan det være lurt å plassere alle navneområdene i en egen fil. Dette kan enkelt gjøres. Når navneområdene er i den separate filen, tar vi bare med den filen i programmet vårt, og bruker deretter navneområdene og innholdet i programmet vårt.
For eksempel, hvis vi har en fil som heter ns.h som inneholder følgende navneområde.
//ns.h namespace first{ int var = 25; }
Nå i vårt program kan vi bruke navneområdet 'først' som følger:
#include #include “ns.h” using namespace std; int main() { cout<Så når vi inkluderer filen som inneholder navneområder i programmet vårt, kan vi bruke navneområdene som om de ble erklært globalt i det samme programmet.
Sammenhengende navnerom
C ++ lar oss også definere noe som kalles sammenhengende navneområder. Sammenhengende navneområder er navneområdene som defineres mer enn en gang ved å ha samme navn. I virkeligheten er dette ikke separate navneområder, men utvidelsene til det samme navneområdet.
Sammenhengende navneområder er tydelige i eksemplet nedenfor.
#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 = '< Produksjon:
lokal var = 20,53
først :: var = 10
andre :: var = 20
Legg merke til i eksemplet ovenfor at vi har definert det samme navneområdet to ganger. I den første definisjonen har vi en variabel som heter var. Mens vi i den andre erklæringen har et annet navneområde definert.
I hovedfunksjonen har vi tilgang til medlemmene i det ytre så vel som det indre navnerommet og bemerker at medlemmene er lett tilgjengelige.
Dette er eksemplet på sammenhengende navneområder, som også er kjent som 'diskontinuerlige navneområder' noen ganger. Definisjonene deres fremstår som separate, men i virkeligheten er de kontinuerlige navnerom.
Konklusjon
Med dette har vi kommet til slutten av denne veiledningen om navneområder i C ++. Navneplasser på en måte som lar oss skille ut koden vår i forskjellige mellomrom eller regioner, slik at vi har klarhet i å lese den og også i bruk av medlemmene.
I de påfølgende veiledningene vil vi lære mer om de forskjellige grunnleggende emnene i C ++ som unntaksbehandling, filinngang / -utgang, etc.
=> Sjekk her for å se AZ av C ++ opplæringsveiledninger her.
Anbefalt lesing
- Beste GRATIS C # opplæringsserie: The Ultimate C # Guide For Beginners
- Lastetesting med HP LoadRunner-opplæringsprogrammer
- Biblioteksfunksjoner i C ++
- 70+ BEST C ++ opplæringsprogrammer for å lære C ++ programmering GRATIS
- Objektorientert programmering i C ++
- Initialiseringslister i C ++
- Iteratorer i STL
- Innkapsling i C ++