Sve što trebate znati o prostoru imena na C ++



Ovaj će vam članak pružiti detaljno i sveobuhvatno znanje o prostoru imena na jeziku C ++. To su razne vrste i namjene u bilo kojem programu.

Prostor imena u C ++-u koristi se za organiziranje koda u logičke grupe i za sprječavanje sudara imena koji se mogu dogoditi posebno kada vaša baza kodova uključuje više knjižnica. U ovom će članku biti obrađeni sljedeći smjerovi:

Potreba za imenskim prostorom

Uzmimo u obzir situaciju, pišemo neki kod koji ima funkciju koja se naziva abc (), a na raspolaganju je još jedna unaprijed definirana knjižnica koja također ima istu funkciju abc (). Sada u vrijeme kompilacije, kompajler nema pojma na koju verziju funkcije abc () mislimo u našem kodu.





Prostor imena u c ++

Da bi se prevladala ova poteškoća, prostor imena je dizajniran i koristi se kao dodatna informacija za razlikovanje sličnih funkcija, varijabli, klasa itd. S istim imenom dostupnim u različitim knjižnicama. Pomoću prostora imena možemo definirati kontekst u kojem su imena definirana. U osnovi, prostor imena definira opseg.



Svi tipovi i funkcije standardne knjižnice C ++ deklarirani su u std prostoru imena ili imenskim prostorima ugniježđenim unutar std-a, stoga se široko koristi u većini programa.

Definiranje prostora imena

Da bismo definirali imenski prostor započinjemo s ključnom riječi imenski prostor nakon kojeg slijedi naziv imenskog prostora:

imenski prostor imena_prostora {int a, b // deklaracije koda gdje su // a i b deklarirani u // opsegu_ime_prostora}

Bodovi koje treba upamtiti prilikom definiranja prostora imena

  • Deklaracije prostora imena pojavljuju se samo na globalnom opsegu.
  • Deklaracije prostora imena nemaju specifikatore pristupa.
  • Deklaracije prostora imena mogu se ugniježditi unutar drugog prostora imena.
  • Nema potrebe za zarezom nakon završne zagrade definicije prostora imena.
  • Definicija prostora imena može se podijeliti na nekoliko jedinica.
#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 }

Izlaz:



kako stvoriti aplikaciju u salesforceu

U gornjem primjeru za definiranje funkcije func () dva različita vremena koristimo koncept prostora imena. Prvu funkciju definiramo pod prostorom imena first_function idruga funkcija pod prostorom imena second_function. Da bismo pozvali ove funkcije, koristimo operator razlučivanja opsega na sljedeći način - first_function :: func () i second_function :: func ().

Korištenje prostora imena u C ++

Postoje tri načina za korištenje prostora imena u programu,

  1. Direktiva o korištenju
  2. Deklaracija o korištenju
  3. Operater razlučivosti opsega (: :)

Direktiva o korištenju

Možemo izbjeći dodavanje prostora imena pomoću koristeći direktiva o imenskom prostoru. koristeći ključna riječ omogućuje nam uvoz cijelog prostora imena u vaš program s globalnim opsegom. Može se koristiti za uvoz prostora imena u drugi prostor imena ili bilo koji program prema našim zahtjevima.

Razmotrite datoteku zaglavlja Namespace_first.h:

prostor imena First {int a class First_class {int i}}

Uključujući gornju datoteku zaglavlja prostora imena u datoteku Namespace_second.h: uključite “Namespace_first.h”

imenski prostor Second {upotreba prostora imena First First_class obj int y}

Uvodimo namespace_First u namespace_Second, stoga će klasa First_class sada biti dostupna u namespace_Second. Stoga sljedeći program možemo napisati u zasebnu datoteku, recimo new_file.cpp.

#include 'namespace_second.h' void test () {using namespace Second // stvaranje objekta klase First_class First_class obj2}

Stoga , direktiva using znatno olakšava upotrebu prostora imena u C ++-u, gdje god želite.

Deklaracija o korištenju

U upotrebnoj deklaraciji uvozimo po jedno određeno ime koje je dostupno samo unutar trenutnog opsega i poziva se uz pomoć razlučivosti opsega. NAPOMENA: Ime uvezeno s using-deklaracijom može nadjačati ime uvezeno s using direktivom. To možemo vidjeti u primjeru ispod.

Razmotrimo datoteku zaglavlja New_File.h:

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

Sada kreirajmo novu programsku datoteku s imenom New_file_2.cpp sa donjim kodom:

#include 'New_file.h' void B () {koristeći prostor imena First // pomoću direktive pomoću Second :: A // pomoću deklaracije First :: A () // klasa A () iz First namespace A () // poziva A () drugog prostora imena}

Operator razlučivosti opsega (: :)

Možemo izričito navesti bilo koje ime deklarirano u prostoru imena koristeći ime prostora prostora i razlučivost opsega ' :: ' operator s identifikatorom.

imenski prostor New_space {klasa X {static int i public: void func ()} // deklaracija imena klase klasa Y} // Inicijalizacija statičke varijable klase int New_space :: X :: i = 23 klasa New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Neprekidni prostor imena na C ++

Kao što znamo, prostor imena u C ++-u može se definirati u nekoliko dijelova, tako da se sastoji od zbroja njegovih zasebno definiranih dijelova. Dakle, ako jedan dio prostora imena zahtijeva ime definirano u drugoj datoteci, to ime i dalje mora biti deklarirano u svom opsegu. Pisanje sljedećeg prostora imena na sljedeći način ili definira novi prostor imena ili dodaje nove elemente postojećem:

imenski prostor namespace_name {// tijelo koda}

Ugnježđeni prostor imena u C ++

Prostori imena mogu se lako ugnijezditi i možemo definirati jedan prostor imena unutar drugog prostora imena na sljedeći način:

namespace namespace_name1 {// tijelo koda namespace_name1 namespace names_name2 {// tijelo koda ugniježđeno namamespace_name2}}

Ovim dolazimo do kraja Imena prostora u članku C ++. Nadam se da ste dobili ideju što je točno prostor imena u C ++-u i koji su različiti načini njegovog definiranja. Ako želite saznati više, pogledajte Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.