namespaces c
Kompletný prehľad menných priestorov v C ++ s jednoduchými príkladmi.
Zatiaľ sme v našich predchádzajúcich tutoriáloch videli všetko o premenných, deklaráciách, funkciách a iných podobných entitách používaných v C ++.
Pri vývoji aplikácií v C ++ môžu vznikať zvláštne situácie, ako sú rovnaké názvy premenných, ktoré sa používajú dvakrát, alebo funkcie definované s rovnakými prototypmi atď. Keď nastanú tieto scenáre, pre kompilátor je ťažké odvodiť správne volanie premennej alebo funkcie, ktoré vedie k nejednoznačnosti. .
=> Vyskúšajte tu dokonalého školiaceho sprievodcu jazykom C ++.
Čo sa dozviete:
- Čo je to menný priestor?
- Definovanie menného priestoru
- Prístup k členom menného priestoru
- Smernica o používaní
- Vnorené menné priestory
- Externé menné priestory
- Súvislé menné priestory
- Záver
- Odporúčané čítanie
Čo je to menný priestor?
Pozrime sa na nasledujúci príklad:
#include #include int main() { int var; double var; std::cin>>var; }
Výkon:
Vo funkcii „int main ()“:
8:10: chyba: kolidujúce vyhlásenie „double var“
7: 7: poznámka: predchádzajúce vyhlásenie ako „int var“
Vo vyššie uvedenom príklade sme definovali dve premenné s rôznymi typmi, ale rovnakým identifikátorom. Takže keď zostavujeme tento príklad, dostaneme chybu, ako je to zobrazené v okne Výstup. Tieto protichodné vyhlásenia vznikajú z dôvodu toho, že na pomenovanie dvoch premenných sa používa rovnaký identifikátor.
Tento typ situácií vedie k nejasnostiam v aplikáciách.
C ++ predstavuje niečo, čo sa volá „ menné priestory ”Na vyriešenie tohto problému. Obor názvov v C ++ je ako balíček alebo oblasť alebo knižnica, ktorá sa používa na rozlíšenie medzi premennou alebo funkciami s rovnakými identifikátormi.
Obor názvov môže obsahovať premenné, funkcie, triedy alebo iné objekty a dokonca aj iný priestor názvov. Na každého člena menného priestoru je možné odkazovať pomocou priestoru menného priestoru. Toto pomáha kompilátoru rozlišovať medzi rôznymi programovacími entitami, aj keď majú rovnaké názvy.
Definovanie menného priestoru
V C ++ môžeme definovať priestor názvov pomocou kľúčového slova „ menný priestor ' ako je uvedené nižšie:
namespace namespace_name{ namespace_declarations; }
Takže ak potrebujeme definovať priestor názvov s názvom „test_space“, môžeme to urobiť takto:
číslo znaku na int c ++
namespace test_space{ int var=10; }
Vyššie uvedená deklarácia definuje priestor názvov s názvom „test_space“. Ako je znázornené, ako člen má celočíselnú premennú var.
Prístup k členom menného priestoru
Teraz sme definovali náš vlastný vlastný menný priestor „test_space“ a ako sa dostaneme k obsahu tohto menného priestoru?
V programe C ++ môžeme pristupovať k členom menného priestoru pomocou syntaxe:
namespace_name::namespace_member;
K celočíselnej premennej var deklarovanej v priestore názvov „test_space“ vyššie je teda možné pristupovať takto:
test_space::var;
V úplnom príklade nižšie nájdete demonštráciu menných priestorov a ich použitia.
#include #include namespace test_space{ int var = 10; } int main() { double var = 20.53; std::cout<<'local var = '< Výkon:
lokálna var = 20,53
test_space :: var = 10
Všetko o vytváraní a prístupe k mennému priestoru sme demonštrovali vo vyššie uvedenom príklade programovania. Ako vidíme, test_space je priestor názvov, ktorý sme definovali. Má v sebe definovanú jednu celočíselnú premennú var. Potom v hlavnej funkcii máme ďalšiu dvojitú premennú var, ktorá je inicializovaná.
Neskôr zobrazíme obe tieto premenné. Všimnite si, že zatiaľ čo lokálnu dvojitú premennú vo vnútri hlavnej položky je možné vytlačiť priamo, aby sme mohli vytlačiť premennú menného priestoru, musíme jej predchádzať názvom menného priestoru.
Toto sa tiež postaralo o problém zrážok medzi premennými kvôli rovnakým názvom, o ktorých sme hovorili už skôr.
Smernica o používaní
V našej predchádzajúcej téme sme videli, že môžeme pristupovať k členom menného priestoru pomocou namespace_name :: namespace_member.
Ak nechceme v celom programe špecifikovať názov menného priestoru, môžeme použiť „ použitím ”Smernica na zahrnutie menného priestoru do programu.
Toto sa deje nasledovne:
#include #include namespace test_space{ int var = 10; } using namespace std; using namespace test_space; int main() { double var = 20.53; cout<<'local var = '< Výkon:
lokálna var = 20,53
test_space :: var = 10
Vo vyššie uvedenom príklade sme po definovaní priestoru názvov „test_space“ použili dva príkazy.
Sú to:
using namespace std; using namespace test_space;
Prvý príkaz používa deklaráciu na prístup k mennému priestoru „std“, ktorý je preddefinovaným štandardným menným priestorom v knižnici C ++. Tento menný priestor sa používa na prístup k rôznym funkciám, ako je cin, cout atď.
Druhý príkaz sa používa na zahrnutie menného priestoru “test_space” do programu.
V hlavnej funkcii vidíme, že funkciám ako cout a variable var nemusí predchádzať názov menného priestoru. Môžeme sa na ne priamo odvolať. Ale keďže var má v hlavnej funkcii konflikt mien s lokálnou premennou, odkazujeme na ňu pomocou operátora rozlíšenia rozsahu (: :), pretože menné priestory majú vždy globálny rozsah.
Vnorené menné priestory
C ++ tiež umožňuje mať vnorené menné priestory, t. J. Menný priestor definovaný vo vnútri iného menného priestoru.
Všeobecná syntax vnorených menných priestorov je nasledovná:
namespace ns1{ ns1_code; namespace ns2{ ns2_code; } }
Ak potrebujeme prístup k ns2_code, môžeme k nemu získať prístup nasledovne:
ako používať súbory torrentu po stiahnutí
ns1::ns2::ns2_code;
Ukážme si vnorené menné priestory pomocou nasledujúceho príkladu kódu.
#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 = '< Výkon:
lokálna var = 20,53
prvý :: var = 10
druhý :: var = 20
Vo vyššie uvedenom programe sme použili vnorené menné priestory. Vezmite prosím na vedomie spôsob, akým sa pomocou direktívy používa na prístup k menným priestorom. Nestačí odkázať iba na najvnútornejší priestor mien raz. Ak potrebujeme kód z najvzdialenejšieho menného priestoru, musíme ho odkázať osobitne.
Môžeme použiť iný názov pre priestory mien známe ako „alias“. To je obzvlášť užitočné pri používaní vnorených menných priestorov a stupeň vnorenia je vysoký.
Alias pre menný priestor môžeme demonštrovať úpravou vyššie uvedeného príkladu.
#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 = '< Výkon:
lokálna var = 20,53
prvý :: var = 10
druhý :: var = 20
Všimnite si vnorený alias, ktorý je definovaný pre priestor názvov first :: second. Po definovaní aliasu potom môžeme na alias odkazovať pomocou aliasu.
Externé menné priestory
Niekedy, keď máme v našej aplikácii príliš veľa menných priestorov, možno budeme chcieť umiestniť všetky tieto menné priestory do samostatného súboru. To sa dá ľahko urobiť. Keď sú menné priestory v samostatnom súbore, jednoducho tento súbor zahrnieme do nášho programu a potom priamo použijeme menné priestory a ich obsah v našom programe.
Napríklad, ak máme súbor s názvom ns.h, ktorý obsahuje nasledujúci menný priestor.
//ns.h namespace first{ int var = 25; }
Teraz v našom programe môžeme použiť priestor názvov „first“ nasledovne:
#include #include “ns.h” using namespace std; int main() { cout<Takže akonáhle do nášho programu vložíme súbor obsahujúci menné priestory, môžeme ich použiť, akoby boli globálne deklarované v rovnakom programe.
Súvislé menné priestory
C ++ nám tiež umožňuje definovať niečo, čo sa nazýva súvislé menné priestory. Susedné menné priestory sú tie menné priestory, ktoré sú definované viac ako raz tým, že majú rovnaké meno. V skutočnosti nejde o samostatné priestory mien, ale o rozšírenia toho istého priestoru mien.
V nasledujúcom príklade sú zrejmé súvislé menné priestory.
#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 = '< Výkon:
lokálna var = 20,53
prvý :: var = 10
druhý :: var = 20
Vo vyššie uvedenom príklade si všimnite, že sme rovnaký priestor názvov definovali dvakrát. V prvej definícii máme premennú s názvom var. Zatiaľ čo v druhej deklarácii máme definovaný iný menný priestor.
V hlavnej funkcii sme pristupovali k členom vonkajšieho aj vnútorného menného priestoru a všimnite si, že k členom je ľahký prístup.
Toto je príklad súvislých menných priestorov, ktoré sú niekedy známe aj ako „nesúvislé menné priestory“. Ich definície sa javia ako samostatné, ale v skutočnosti sú to súvislé menné priestory.
Záver
Týmto sme sa dostali na koniec tohto tutoriálu o menných priestoroch v C ++. Menné priestory jedným spôsobom, ktorý nám umožňuje oddeliť náš kód v rôznych priestoroch alebo regiónoch, aby sme mali jasnosť pri jeho čítaní a tiež pri používaní jeho členov.
virtuálna realita kompatibilná s xbox one
V našich ďalších tutoriáloch sa dozvieme viac o rôznych základných témach jazyka C ++, ako je spracovanie výnimiek, vstup / výstup súborov atď.
=> Ak chcete vidieť A-Z výučbových kurzov C ++, kliknite sem.
Odporúčané čítanie
- Najlepšia výučbová séria C # ZDARMA: Sprievodca C # pre začiatočníkov
- Testovanie záťaže s výukovými programami HP LoadRunner
- Funkcie knižnice v C ++
- 70+ NAJLEPŠÍCH tutoriálov pre C ++ Naučte sa programovanie v C ++ ZDARMA
- Objektovo orientované programovanie v C ++
- Zoznamy inicializátorov v C ++
- Iterátory v STL
- Zapuzdrenie v C ++