Všetko, čo potrebujete vedieť o mennom priestore v C ++



Tento článok vám poskytne podrobné a komplexné vedomosti o priestore mien v jazyku C ++. Je to rôzne typy a použitia v akomkoľvek programe.

Obor názvov v jazyku C ++ sa používa na usporiadanie kódu do logických skupín a na zabránenie kolíziám názvov, ku ktorým môže dôjsť najmä vtedy, keď vaša základňa kódov obsahuje viac knižníc. V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi:

Potreba menného priestoru

Uvažujme o situácii, píšeme nejaký kód, ktorý má funkciu nazvanú abc () a je k dispozícii ďalšia preddefinovaná knižnica, ktorá má tiež rovnakú funkciu abc (). Teraz v čase kompilácie kompilátor vôbec netuší, na ktorú verziu funkcie abc () v našom kóde odkazujeme.





Menný priestor v c ++

Na prekonanie tejto ťažkosti je navrhnutý menný priestor, ktorý sa používa ako ďalšia informácia na odlíšenie podobných funkcií, premenných, tried atď. S rovnakým názvom, aký je k dispozícii v rôznych knižniciach. Pomocou menného priestoru môžeme definovať kontext, v ktorom sú definované názvy. Obor mien v podstate definuje rozsah.



Všetky štandardné typy a funkcie knižnice v C ++ sú deklarované v mennom priestore std alebo v menných priestoroch vnorených do std, takže je vo väčšine programov široko používaný.

je magisterský a postgraduálny stupeň

Definovanie menného priestoru

Pri definovaní menného priestoru začíname s menným priestorom kľúčových slov, za ktorým nasleduje názov menného priestoru nasledovne:

namespace namespace_name {int a, b // deklarácie kódu, kde // a a b sú deklarované v // rozsahu menného priestoru}

Body, ktoré si treba pamätať pri definovaní menného priestoru

  • Vyhlásenia menného priestoru sa objavujú iba v globálnom rozsahu.
  • Vyhlásenia menného priestoru nemajú špecifikátory prístupu.
  • Deklarácie menného priestoru môžu byť vnorené do iného menného priestoru.
  • Po koncovej zátvorke definície priestoru mien nie je potrebné dávať bodkočiarku.
  • Definíciu menného priestoru je možné rozdeliť na niekoľko jednotiek.
#include using namespace std namespace first_function {void func () {cout<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

Výkon:



Vo vyššie uvedenom príklade na definovanie funkcie func () dva rôzne časy použijeme koncept menného priestoru. Prvú funkciu definujeme pod menným priestorom first_function adruhá funkcia v mennom priestore second_function. Na volanie týchto funkcií používame operátor rozlíšenia rozsahu nasledujúcim spôsobom - first_function :: func () a second_function :: func ().

Používanie menného priestoru v C ++

Existujú tri spôsoby, ako využiť menný priestor v programe,

  1. Smernica o používaní
  2. Vyhlásenie o použití
  3. Prevádzkovateľ riešenia rozsahu (: :)

Smernica o používaní

Predchádzaniu predpripravovaniu menných priestorov pomocou použitím smernica o mennom priestore. použitím kľúčové slovo nám umožňuje importovať do vášho programu celý priestor mien s globálnym rozsahom. Môže sa použiť na import menného priestoru do iného menného priestoru alebo ľubovoľného programu podľa našich požiadaviek.

Zvážte hlavičkový súbor Namespace_first.h:

namespace First {int a class First_class {int i}}

Vrátane vyššie uvedeného hlavičkového súboru menného priestoru do súboru Namespace_second.h: zahrnúť „Namespace_first.h“

namespace Second {using namespace First First_class obj int y}

Importujeme namespace_First do namespace_Second, takže trieda First_class bude teraz k dispozícii v namespace_Second. Preto môžeme nasledujúci program zapísať do samostatného súboru, povedzme new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Second // creating object of class First_class First_class obj2}

Preto , direktíva using výrazne uľahčuje používanie priestoru mien v C ++, kdekoľvek chcete.

Vyhlásenie o použití

V deklarácii using importujeme po jednom konkrétnom názve, ktorý je k dispozícii iba v rámci aktuálneho rozsahu a volá sa pomocou rozlíšenia rozsahu. POZNÁMKA: Názov importovaný pomocou deklarácie using môže prepísať názov importovaný pomocou direktívy. Môžeme to vidieť na príklade nižšie.

Uvažujme o hlavičkovom súbore New_File.h:

namespace First {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Teraz vytvorme nový programový súbor s názvom New_file_2.cpp s nasledujúcim kódom:

#include 'New_file.h' void B () {using namespace First // using directive using Second :: A // using declaration First :: A () // class A () of First namespace A () // calls A () druhého menného priestoru}

Operátor riešenia rozsahu (: :)

Môžeme výslovne určiť akýkoľvek názov deklarovaný v priestore názvov pomocou názvu priestoru názvov a rozlíšenia rozsahu. “ :: ' operátor s identifikátorom.

rozdiel medzi hash mapou a hash tabuľkou
namespace New_space {class X {static int i public: void func ()} // deklarácia názvu triedy class Y} // Inicializácia premennej statickej triedy int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Nespojitý menný priestor v C ++

Ako vieme, menný priestor v C ++ môže byť definovaný v niekoľkých častiach, takže je tvorený súčtom jeho samostatne definovaných častí. Takže ak jedna časť menného priestoru vyžaduje názov definovaný v inom súbore, tento názov musí byť stále deklarovaný v jeho rozsahu. Zápis nasledujúceho priestoru mien nasledujúcim spôsobom buď definuje nový priestor mien, alebo pridá nové prvky k existujúcemu:

namespace namespace_name {// code body}

Vnorený menný priestor v C ++

Menné priestory je možné ľahko vnoriť a jeden menný priestor môžeme definovať vo vnútri iného menného priestoru nasledovne:

namespace namespace_name1 {// telo kódu namespace_name1 namespace namespace_name2 {// telo kódu vnorené namamespace_name2}}

Týmto sa dostávame na koniec článku Namespace in C ++. Dúfam, že ste získali predstavu o tom, čo presne je to menný priestor v C ++ a aké sú rôzne spôsoby jeho definovania. Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil pre základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.