Viskas, ką reikia žinoti apie vardų sritį C ++



Šis straipsnis suteiks jums išsamių ir išsamių žinių apie vardų sritį C ++. Tai yra įvairių tipų ir naudojimo bet kurioje programoje.

Vardų sritis C ++ naudojama organizuoti kodą į logines grupes ir užkirsti kelią vardų susidūrimams, kurie gali įvykti, ypač kai jūsų kodų bazėje yra kelios bibliotekos. Šiame straipsnyje bus aptariami šie rodyklės:

Vardų erdvės poreikis

Apsvarstykite situaciją, mes rašome kodą, kuris turi funkciją, vadinamą abc (), ir yra dar viena iš anksto nustatyta biblioteka, kuri taip pat turi tą pačią funkciją abc (). Kompiliavimo metu kompiliatorius neturi supratimo, kurią abc () versijos versiją mes nurodome savo kode.





Vardų sritis c ++

Šiam sunkumui įveikti sukurta vardų sritis, kuri naudojama kaip papildoma informacija, siekiant atskirti panašias funkcijas, kintamuosius, klases ir kt. Tuo pačiu pavadinimu, prieinamą skirtingose ​​bibliotekose. Naudodami vardų sritį galime apibrėžti kontekstą, kuriame apibrėžiami vardai. Iš esmės vardų sritis apibrėžia taikymo sritį.



Visi C ++ standartiniai bibliotekos tipai ir funkcijos yra deklaruojami standartinėje vardų srityje arba vardų erdvėse, įdėtose standartiniame standarte, taigi ji plačiai naudojama daugumoje programų.

Vardų srities apibrėžimas

Norėdami apibrėžti vardų sritį, mes pradedame nuo raktinių žodžių vardų srities, po kurios eina vardų srities pavadinimas:

vardų sritis vardų srities_vardas {int a, b // kodų deklaracijos, kur // a ir b deklaruojamos // vardų srities_pavadinimo srityje}

Taškai, kuriuos reikia atsiminti apibrėžiant vardų sritį

  • Vardų srities deklaracijos rodomos tik visuotinai.
  • Vardų srities deklaracijose nėra prieigos specifikatorių.
  • Vardų srities deklaracijos gali būti įdėtos į kitą vardų sritį.
  • Nereikia duoti kabliataškio po vardų srities apibrėžimo pabaigos.
  • Vardų srities apibrėžimą galima padalyti į kelis vienetus.
#include naudojant vardų sritį std vardų sritis 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 }

Išvestis:



Aukščiau pateiktame pavyzdyje, norėdami apibrėžti funkciją func () du skirtingus kartus, mes naudojame vardų srities koncepciją. Pirmąją funkciją apibrėžiame vardų srityje first_function irantroji funkcija pagal vardų sritį. Norėdami iškviesti šias funkcijas, mes naudojame srities skiriamosios gebos operatorių tokiu būdu - first_function :: func () ir second_function :: func ().

Vardų srities naudojimas C ++

Yra trys vardų srities naudojimo programoje būdai,

  1. Naudojimo direktyva
  2. Naudojimo deklaracija
  3. Apimties skyros operatorius (: :)

Naudojimo direktyva

Mes galime išvengti vardų srities paruošimo naudojant naudojant vardų srities direktyva. naudojant raktinis žodis leidžia mums į jūsų programą importuoti visą vardų sritį su visuotine apimtimi. Pagal mūsų reikalavimus jis gali būti naudojamas vardų srities importavimui į kitą vardų sritį ar bet kurią programą.

java laukti ir pranešti pavyzdys

Apsvarstykite antraštės failą Namespace_first.h:

vardų sritis Pirma {int a class First_class {int i}}

Įtraukite aukščiau nurodytą vardų srities antraštės failą į „Namespace_second.h“ failą: įtraukite „Namespace_first.h“

mesti dvigubai į int java
vardų sritis Antroji {naudojant vardų sritį Pirmoji Pirmos_klasės obj int y}

Importuojame vardų sritį_Pirmiausia į vardų sritį_Sekundė, todėl „First_class“ klasė dabar bus prieinama vardų srities_Sekundė. Taigi šią programą galime parašyti atskirame faile, tarkime, new_file.cpp.

#include 'Namespace_second.h' void test () {naudojant vardų sritį Second // kuriant klasės objektą First_class First_class obj2}

Vadinasi , naudojant direktyvą žymiai lengviau naudoti vardų sritį C ++, kur tik norite.

Naudojimo deklaracija

Naudodamiesi deklaracijoje vienu metu importuojame vieną konkretų pavadinimą, kuris yra prieinamas tik dabartinės srities ribose, ir jis iškviečiamas naudojant srities skiriamąją gebą. PASTABA: Vardas, importuotas naudojant naudojimo deklaraciją, gali nepaisyti vardo, importuoto naudojant direktyvą. Tai galime pamatyti žemiau pateiktame pavyzdyje.

Panagrinėkime antraštės failą New_File.h:

vardų sritis Pirmoji {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Dabar sukurkime naują programos failą pavadinimu New_file_2.cpp su žemiau esančiu kodu:

#include 'New_file.h' negalioja B () {naudojant vardų sritį First // naudojant direktyvą naudojant Second :: A // naudojant deklaraciją First :: A () // Vardų srities A () klasė A () // iškviečia A () antrosios vardų srities}

Apimties skyros operatorius (: :)

Mes galime aiškiai nurodyti bet kurį vardą, deklaruotą vardų srityje, naudodami vardų srities pavadinimą ir srities skiriamąją gebą. :: ' operatorius su identifikatoriumi.

vardų sritis „New_space“ {klasė X {static int i public: void func ()} // klasės pavadinimo deklaravimo klasė Y} // statinio klasės kintamojo int inicijavimas New_space :: X :: i = 23 klasė New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Nenuosekli vardų sritis C ++

Kaip žinome, vardų sritis C ++ gali būti apibrėžta keliose dalyse, taigi ją sudaro atskirai apibrėžtų dalių suma. Taigi, jei vienai vardų srities daliai reikia pavadinimo, apibrėžto kitame faile, tas vardas vis tiek turi būti deklaruotas jo taikymo srityje. Rašant šią vardų sritį tokiu būdu, apibrėžiama nauja vardų sritis arba prie esamų pridedami nauji elementai:

vardų sritis namespace_name {// kodo turinys}

Įdėtoji vardų sritis C ++

Vardų sritis galima lengvai įdėti į kitą ir mes galime apibrėžti vieną vardų sritį kitoje vardų srityje taip:

vardų sritis namespace_name1 {// vardų srities_name1 vardų srities pavadinimų sritis namespace_name2 {// kodo turinio lizdų pavadinimų srities_name2}}

Tuo mes baigiame vardų srities C ++ straipsnį. Tikiuosi, kad jūs supratote, kas tiksliai yra vardų sritis C ++ ir kokie yra skirtingi jos apibrėžimo būdai. Jei norite sužinoti daugiau, patikrinkite autorius - patikima internetinė mokymosi įmonė „Edureka“. „Edureka“ „Java J2EE“ ir „SOA“ mokymo ir sertifikavimo kursai skirti mokyti jus tiek pagrindinėms, tiek pažangioms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje, ir mes kuo greičiau susisieksime su jumis.