Kõik, mida peate teadma nimeruumi kohta C ++ keeles



See artikkel annab teile üksikasjalikud ja põhjalikud teadmised nimeruumist C ++ keeles. See on erinevat tüüpi ja kasutab mis tahes programmis.

C ++ nimeruumi kasutatakse koodi korraldamiseks loogilistesse rühmadesse ja nimede kokkupõrgete vältimiseks, mis võivad tekkida eriti siis, kui teie koodibaas sisaldab mitut teeki. Selles artiklis käsitletakse järgmisi näpunäiteid:

Vajadus nimeruumi järele

Mõelgem olukorrale, me kirjutame mõnda koodi, millel on funktsioon nimega abc () ja saadaval on veel üks eelnevalt määratletud teek, millel on samuti sama funktsioon abc (). Nüüd pole kompileerijal aimugi, millisele funktsiooni abc () versioonile me oma koodis viitame.





Nimeruum c ++ keeles

Selle raskuse ületamiseks on loodud nimeruum ja seda kasutatakse lisateabena, et eristada erinevates raamatukogudes saadaval olevaid sama nimega funktsioone, muutujaid, klasse jne. Nimeruumi abil saame määratleda konteksti, milles nimed on määratletud. Sisuliselt määratleb nimeruum ulatuse.



Kõik C ++ standardsed teegitüübid ja funktsioonid on deklareeritud standarddn-ruumis või standardruumis pesastatud nimeruumides, seega kasutatakse seda enamikus programmides laialdaselt.

kuidas java palindroomi leida

Nimeruumi määratlemine

Nimeruumi määratlemiseks alustame märksõnast nimeruum, millele järgneb nimeruumi nimi järgmiselt:

nimeruum nimeruumi_nimi {int a, b // koodideklaratsioonid, kus // a ja b deklareeritakse // nimeruumi_nime ulatuses}

Juhib tähelepanu nimeruumi määratlemisel

  • Nimeruumi deklaratsioonid ilmuvad ainult globaalses ulatuses.
  • Nimeruumi deklaratsioonidel pole juurdepääsu täpsustajaid.
  • Nimeruumi deklaratsioone saab pesitseda mõnes teises nimeruumis.
  • Pärast nimeruumi määratluse sulgumist pole vaja lisada semikoolonit.
  • Nimeruumi määratlust saab jagada mitmeks ühikuks.
#include nimeruumi kasutamine standardne nimeruum 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äljund:



Funktsiooni func () määratlemiseks ülaltoodud näites kasutame nimeruumi mõistet. Esimese funktsiooni määratleme nimeruumis first_function jateine ​​funktsioon nimeruumi all teine ​​funktsioon. Nende funktsioonide kutsumiseks kasutame ulatuseralduse operaatorit järgmiselt - first_function :: func () ja second_function :: func ().

Nimeruumi kasutamine C ++ -s

Nimeruumi saab programmis kasutada kolmel viisil,

  1. Kasutamisdirektiiv
  2. Kasutusdeklaratsioon
  3. Reguleerimisala eraldamise operaator (: :)

Kasutamisdirektiiv

Me võime vältida nimeruumide ettevalmistamist kasutades nimeruumi direktiiv. kasutades märksõna võimaldab meil importida teie programmi terve nimeruumi globaalse ulatusega. Seda saab kasutada nimeruumi importimiseks teise nimeruumi või mõnda muusse programmi vastavalt meie nõudmistele.

Vaatleme päisefaili Namespace_first.h:

nimeruum Esimene {int a class First_class {int i}}

Ülaltoodud nimeruumi päisefaili lisamine faili Namespace_second.h: kaasake „Namespace_first.h”

nimeruum teine ​​{nimeruumi abil esimene First_class obj int y}

Importime nimeruumi_Esimene nimeruumi_Sekundiks, seega on klass First_class nüüd saadaval nimeruumis_Sekund. Seega võime järgmise programmi kirjutada eraldi faili, oletame näiteks, et new_file.cpp.

#include 'Namespace_second.h' void test () {kasutades nimeruumi Second // klassi objekti loomine First_class First_class obj2}

Seega , muudab kasutamisdirektiiv palju lihtsamaks nimeruumi kasutamist C ++ keeles, kus iganes soovite.

kuidas teha jframe

Kasutusdeklaratsioon

Kasutades deklaratsiooni, impordime korraga ühe konkreetse nime, mis on saadaval ainult praeguses ulatuses ja seda kutsutakse ulatuseralduse abil. MÄRKUS. Kasutamisdeklaratsiooniga imporditud nimi võib direktiivi kasutamisel imporditud nime alistada. Seda näeme allpool toodud näites.

Vaatleme päisefaili New_File.h:

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

Nüüd loome uue programmifaili nimega New_file_2.cpp allpool oleva koodiga:

#include 'New_file.h' void B () {kasutades nimeruumi First // kasutades direktiivi kasutades Second :: A // kasutades deklaratsiooni First :: A () // eesnimeruumi A klass () // kutsub A () teisest nimeruumist}

Reguleerimisala eraldamise operaator (: :)

Saame nimeruumis deklareerida kõik nimed, kasutades nimeruumi nime ja ulatuse eraldusvõimet. ' :: ' operaator identifikaatoriga.

nimeruum Uus_ruum {klass X {staatiline int i public: void func ()} // klassi nime deklaratsiooniklass Y} // Staatilise klassi muutuja initsialiseerimine Uus_ruum :: X :: i = 23 klass Uus_ruum :: Y {avalik: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Katkematu nimeruum C ++ keeles

Nagu me teame, saab nimeruumi C ++ -s määratleda mitmes osas, seega koosneb see selle eraldi määratletud osade summast. Niisiis, kui nimeruumi üks osa nõuab teises failis määratletud nime, tuleb see nimi ikkagi deklareerida selle ulatuses. Järgmise nimeruumi järgmisel viisil kirjutamine määratleb kas uue nimeruumi või lisab olemasolevale uued elemendid:

nimeruum nimeruumi_nimi {// koodi sisu}

Pesastatud nimeruum C ++ keeles

Nimeruume saab hõlpsalt pesitseda ja ühe nimeruumi saab teise nimeruumi piires määratleda järgmiselt:

nimeruum nimeruumi_nimi1 {// nimeruumi_nimi1 kooditekst nimeruum nimeruumi_nimi2 {// kooditeksti sisestatud pesa nimenimeru2_}

Sellega jõuame artikli C ++ nimeruumi lõppu. Loodan, et said aimu, mis täpselt on nimeruum C ++ keeles ja millised on selle määratlemise erinevad viisid. Kui soovite rohkem teada saada, vaadake järgmist autor Edureka, usaldusväärne veebiõppe ettevõte. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java põhiliste kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.

prioriteetse järjekorra juurutamine javas