namespaces c
Popoln pregled imenskih prostorov v jeziku C ++ s preprostimi primeri.
Do sedaj smo v naših prejšnjih vajah videli vse o spremenljivkah, deklaracijah, funkcijah in drugih takih entitetah, ki se uporabljajo v jeziku C ++.
Med razvojem aplikacij v jeziku C ++ se lahko pojavijo nekatere posebne situacije, na primer dvakrat uporabljena ista imena spremenljivk ali funkcije, definirane z istimi prototipi itd. Ko se pojavijo ti scenariji, postane prevajalniku težko določiti pravilno spremenljivko ali klic funkcije, ki povzroča dvoumnost .
=> Tukaj si oglejte Perfect Guide za usposabljanje za C ++.
Kaj se boste naučili:
- Kaj je imenski prostor?
- Določitev imenskega prostora
- Dostop do članov imenskega prostora
- Direktiva o uporabi
- Ugnezdeni imenski prostori
- Zunanji imenski prostori
- Sosednji imenski prostori
- Zaključek
- Priporočeno branje
Kaj je imenski prostor?
Oglejte si spodnji primer:
#include #include int main() { int var; double var; std::cin>>var; }
Izhod:
V funkciji ‘int main ()’:
8:10: napaka: nasprotujoča si izjava 'dvojna var'
7: 7: opomba: prejšnja izjava kot „int var“
V zgornjem primeru smo definirali dve spremenljivki z različnimi tipi, vendar z istim identifikatorjem. Torej, ko zberemo ta primer, dobimo napako, kot je prikazano v oknu Izhod. Te nasprotujoče si izjave nastanejo zaradi istega identifikatorja, ki se uporablja za poimenovanje dveh spremenljivk.
Tovrstne situacije povzročajo dvoumnost v aplikacijah.
C ++ uvaja nekaj, kar se imenuje » imenski prostori «Za rešitev te težave. Imenski prostor v jeziku C ++ je tako kot paket ali regija ali knjižnica, ki se uporablja za razlikovanje med spremenljivko ali funkcijami z enakimi identifikatorji.
Imenski prostor lahko vsebuje spremenljivke, funkcije, razrede ali druge predmete in celo drug imenski prostor. Vsak član imenskega prostora se lahko sklicuje z uporabo prostora imenskega prostora. To pomaga prevajalniku, da razlikuje med različnimi programskimi entitetami, tudi če imajo ista imena.
Določitev imenskega prostora
V jeziku C ++ lahko imenski prostor določimo s ključno besedo “ imenski prostor ', Kot je prikazano spodaj:
namespace namespace_name{ namespace_declarations; }
Torej, če moramo definirati imenski prostor z imenom 'test_space', lahko to storimo kot spodaj:
namespace test_space{ int var=10; }
Zgornja izjava definira imenski prostor z imenom 'test_space'. Kot je prikazano, ima za člana celo spremenljivko var.
Dostop do članov imenskega prostora
Zdaj smo opredelili svoj imenski prostor 'test_space' in kako dostopamo do vsebine tega imenskega prostora?
V programu C ++ lahko do članov imenskega prostora dostopamo s pomočjo sintakse:
namespace_name::namespace_member;
Tako je do celovite spremenljivke var, razglašene v imenskem prostoru »test_space« zgoraj, mogoče dostopati na naslednji način:
test_space::var;
Oglejte si celoten primer spodaj, da prikažete imenske prostore in njihovo uporabo.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Izhod:
lokalna var = 20,53
test_space :: var = 10
Vse o ustvarjanju in dostopu do imenskega prostora smo pokazali v zgornjem primeru programiranja. Kot vidimo, je 'test_space' imenski prostor, ki smo ga definirali. V njem je definirana ena celoštevilčna spremenljivka var. Nato v glavni funkciji imamo še eno dvojno spremenljivko var, ki je inicializirana.
Kasneje bomo prikazali obe spremenljivki. Upoštevajte, da čeprav lahko lokalno dvojno spremenljivko znotraj glavnega natisnete neposredno, jo moramo za tiskanje spremenljivke imenskega prostora postaviti pred imenom imenskega prostora.
To je poskrbelo tudi za problem spopadov med spremenljivkami zaradi istih imen, o katerih smo že govorili.
Direktiva o uporabi
V prejšnji temi smo videli, da lahko do imenskega prostora dostopamo s pomočjo namespace_name :: namespace_member.
Če imena imenskega prostora ne želimo določiti povsod v programu, lahko uporabimo uporabo 'Za vključitev imenskega prostora v program.
To se naredi na naslednji način:
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< Izhod:
lokalna var = 20,53
test_space :: var = 10
V zgornjem primeru smo po opredelitvi imenskega prostora »test_space« uporabili dva stavka.
To so:
using namespace std; using namespace test_space;
Prvi stavek uporablja izjavo za dostop do imenskega prostora 'std', ki je vnaprej določen standardni imenski prostor v knjižnici C ++. Ta imenski prostor se uporablja za dostop do različnih funkcij, kot so cin, cout itd.
Drugi stavek se uporablja za vključitev imenskega prostora 'test_space' v program.
V glavni funkciji lahko vidimo, da pred funkcijami, kot sta cout in spremenljivka var, ni treba imeti imena imenskega prostora. Lahko se neposredno sklicujemo nanje. Ker pa ima var v glavni funkciji poimenovanje z lokalno spremenljivko, ga napotimo z uporabo operaterja ločljivosti obsega (: :), saj imajo imenski prostori vedno tudi globalni obseg.
Ugnezdeni imenski prostori
C ++ omogoča tudi vgnezdene imenske prostore, tj.imenski prostor, definiran znotraj drugega imenskega prostora.
Splošna sintaksa ugnezdenih imenskih prostorov je naslednja:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Če potrebujemo dostop do ns2_code, potem lahko do nje pridemo na naslednji način:
ns1::ns2::ns2_code;
Demonstrirajmo ugnezdene imenske prostore z naslednjim primerom kode.
#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 = '< Izhod:
lokalna var = 20,53
najprej :: var = 10
drugi :: var = 20
V zgornjem programu smo uporabili ugnezdene imenske prostore. Upoštevajte način uporabe direktive using za dostop do imenskih prostorov. Ni dovolj, da se enkrat sklicujete le na najbolj notranji imenski prostor. Če potrebujemo kodo iz najbolj oddaljenega imenskega prostora, jo moramo napotiti ločeno.
najboljše mesto za ogled anime
Za imenske prostore, znane kot »vzdevek«, lahko uporabimo drugo ime. To je še posebej koristno pri uporabi ugnezdenih imenskih prostorov in je stopnja ugnezditve velika.
Vzdevek za imenski prostor lahko dokažemo s spreminjanjem zgornjega primera.
#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 = '< Izhod:
lokalna var = 20,53
najprej :: var = 10
drugi :: var = 20
Upoštevajte ugnezdeni vzdevek, ki je definiran za imenski prostor first :: second. Ko je vzdevek definiran, se lahko nato z imenom vzdevka sklicujemo na imenski prostor.
Zunanji imenski prostori
Včasih imamo preveč imenskih prostorov, ki jih lahko uporabimo v naši aplikaciji, zato lahko vse imenske prostore postavimo v ločeno datoteko. To je enostavno storiti. Ko so imenski prostori v ločeni datoteki, to datoteko samo vključimo v naš program in nato neposredno uporabimo imenske prostore in njihovo vsebino v našem programu.
Na primer, če imamo datoteko z imenom ns.h, ki vsebuje naslednji imenski prostor.
//ns.h namespace first{ int var = 25; }
Zdaj v našem programu lahko uporabimo imenski prostor 'najprej', kot sledi:
#include #include “ns.h” using namespace std; int main() { cout<Ko torej v naš program vključimo datoteko, ki vsebuje imenske prostore, lahko uporabimo imenske prostore, kot da bi bili v istem programu razglašeni globalno.
Sosednji imenski prostori
C ++ nam omogoča tudi, da določimo nekaj, kar imenujemo sosednji imenski prostori. Sosednji imenski prostori so imenski prostori, ki so večkrat definirani z istim imenom. V resnici to niso ločeni imenski prostori, temveč razširitve istega imenskega prostora.
Neprekinjeni imenski prostori so razvidni iz spodnjega primera.
#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 = '< Izhod:
lokalna var = 20,53
najprej :: var = 10
drugi :: var = 20
V zgornjem primeru opazite, da smo dvakrat definirali isti imenski prostor. V prvi definiciji imamo spremenljivko z imenom var. Medtem ko imamo v drugi izjavi definiran drug imenski prostor.
V glavni funkciji smo dostopali do članov zunanjega in notranjega imenskega prostora ter ugotavljamo, da so člani enostavno dostopni.
To je primer sosednjih imenskih prostorov, ki so včasih znani tudi kot 'neprekinjeni imenski prostori'. Njihove definicije so ločene, v resnici pa so neprekinjeni imenski prostori.
Zaključek
S tem smo prišli do konca te vadnice o imenskih prostorih v C ++. Imenski prostori na en način, ki nam omogoča, da ločimo našo kodo v različnih prostorih ali regijah, tako da imamo jasnost pri branju in uporabi njenih članov.
V naslednjih vajah bomo izvedeli več o različnih osnovnih temah C ++, kot so ravnanje z izjemami, vnos / izhod datotek itd.
=> Tukaj si oglejte A-Z o vajah za usposabljanje za C ++.
Priporočeno branje
- Najboljša BREZPLAČNA vadnica za C #: Ultimate C # Guide za začetnike
- Testiranje obremenitve z vadnicami HP LoadRunner
- Knjižnične funkcije v jeziku C ++
- 70+ NAJBOLJŠIH vaj za C ++ za BREZPLAČNO učenje C ++ programiranja
- Objektno usmerjeno programiranje v jeziku C ++
- Seznami inicializatorjev v jeziku C ++
- Iteratorji v STL
- Kapsulacija v C ++