Vse, kar morate vedeti o imenskem prostoru v jeziku C ++



V tem članku boste našli podrobno in celovito znanje o imenskem prostoru v jeziku C ++. Obstajajo različne vrste in uporabe v katerem koli programu.

Imenski prostor v jeziku C ++ se uporablja za organiziranje kode v logične skupine in za preprečevanje trkov imen, ki se lahko pojavijo, zlasti kadar vaša kodna baza vključuje več knjižnic. V tem članku bodo zajeti naslednji napotki:

Potreba po imenskem prostoru

Razmislite o situaciji, pišemo neko kodo, ki ima funkcijo, imenovano abc (), na voljo pa je še ena vnaprej določena knjižnica, ki ima prav tako isto funkcijo abc (). Zdaj v času prevajanja prevajalnik nima pojma, na katero različico funkcije abc () se sklicujemo v naši kodi.





Imenski prostor v c ++

Za premagovanje te težave je imenski prostor zasnovan in se uporablja kot dodatne informacije za razlikovanje podobnih funkcij, spremenljivk, razredov itd. Z istim imenom, ki je na voljo v različnih knjižnicah. Z imenskim prostorom lahko določimo kontekst, v katerem so imena definirana. V bistvu imenski prostor definira obseg.



Vsi tipi in funkcije knjižnice C ++ so deklarirani v imenskem prostoru std ali imenskih prostorih, ugnezdenih v std, zato se pogosto uporablja v večini programov.

Določitev imenskega prostora

Za določitev imenskega prostora začnemo s ključno besedo imenski prostor, ki mu sledi ime imenskega prostora, kot sledi:

imenski prostor imensko_ime {int a, b // deklaracije kod, kjer sta // a in b deklarirana v // imenskem_ime_obsega}

Točke, ki si jih je treba zapomniti med definiranjem imenskega prostora

  • Izjave imenskega prostora se pojavijo samo na globalnem področju.
  • Izjave imenskega prostora nimajo specifikatorjev dostopa.
  • Izjave imenskega prostora lahko ugnezdijo v drug imenski prostor.
  • Po zaključni oklepaji definicije imenskega prostora ni treba podpičiti.
  • Opredelitev imenskega prostora je mogoče razdeliti na več enot.
#include uporabo imenskega prostora std imenski prostor 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 }

Izhod:



vrste operaterjev v javascriptu

V zgornjem primeru za definiranje funkcije func () dva različna časa uporabimo koncept imenskega prostora. Prvo funkcijo definiramo pod imenskim prostorom first_function indruga funkcija v imenskem prostoru. Za klic teh funkcij uporabljamo operater ločljivosti obsega na naslednji način - first_function :: func () in second_function :: func ().

Uporaba imenskega prostora v jeziku C ++

Obstajajo trije načini uporabe imenskega prostora v programu,

  1. Direktiva o uporabi
  2. Izjava o uporabi
  3. Operater za ločljivost obsega (: :)

Direktiva o uporabi

Lahko se izognemo predpricanju imenskih prostorov z uporabo direktiva o imenskem prostoru. uporabo Ključna beseda nam omogoča uvoz celotnega imenskega prostora v vaš program s splošnim obsegom. Uporablja se lahko za uvoz imenskega prostora v drug imenski prostor ali kateri koli program v skladu z našimi zahtevami.

Razmislite o glavi datoteke Namespace_first.h:

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

Vključno z zgornjo datoteko glave imenskega prostora v datoteko Namespace_second.h: vključite “Namespace_first.h”

kaj je pojo spomladi
imenski prostor Second {z uporabo imenskega prostora First First_class obj int y}

Mi namespace_First uvozimo v namespace_Second, zato bo razred First_class zdaj na voljo v namespace_Second. Zato lahko naslednji program zapišemo v ločeno datoteko, recimo new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Second // ustvarjanje predmeta razreda First_class First_class obj2}

Zato , direktiva using olajša uporabo imenskega prostora v jeziku C ++, kjer koli želite.

Izjava o uporabi

V izjavo o uporabi uvozimo po eno določeno ime, ki je na voljo samo znotraj trenutnega obsega in ga pokličemo s pomočjo ločljivosti obsega. OPOMBA: Ime, uvoženo z deklaracijo using, lahko preglasi ime, uvoženo z direktivo using. To lahko vidimo v spodnjem primeru.

Oglejmo si datoteko glave New_File.h:

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

Zdaj pa ustvarimo novo programsko datoteko z imenom New_file_2.cpp s spodnjo kodo:

#include 'New_file.h' void B () {z uporabo imenskega prostora First // z uporabo direktive z uporabo Second :: A // z uporabo deklaracije First :: A () // razred A () iz First namespace A () // pokliče A () drugega imenskega prostora}

Operater ločljivosti obsega (: :)

Izrecno lahko določimo katero koli ime, navedeno v imenskem prostoru, z uporabo imena in ločljivosti področja ' :: ' operater z identifikatorjem.

imenski prostor New_space {razred X {statični int i public: void func ()} // deklaracija imena razreda razred Y} // Inicializacija spremenljivke statičnega razreda int New_space :: X :: i = 23 razred New_space :: Y {int javni: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Neprijeten imenski prostor v jeziku C ++

Kot vemo, je imenski prostor v jeziku C ++ mogoče definirati v več delih, zato je sestavljen iz vsote njegovih ločeno določenih delov. Torej, če en del imenskega prostora zahteva ime, določeno v drugi datoteki, mora biti to ime še vedno navedeno v njegovem obsegu. Pisanje naslednjega imenskega prostora na naslednji način definira nov imenski prostor ali pa obstoječemu doda nove elemente:

imenski prostor imensko_ime {// telo kode}

Vgnezdeni imenski prostor v jeziku C ++

Imenske prostore je mogoče enostavno ugnezditi in en imenski prostor lahko določimo znotraj drugega imenskega prostora, kot sledi:

namespace namespace_name1 {// telo kode namespace_name1 namespace names_name2 {// telo kode ugnezdeno namamespace_name2}}

S tem smo prišli do konca imenskega prostora v članku C ++. Upam, da imate idejo, kaj točno je imenski prostor v jeziku C ++ in kakšni so različni načini njegove opredelitve. Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

kdaj uporabiti to

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika, mi pa se vam bomo javili v najkrajšem možnem času.