C ++ - nimitilaa käytetään järjestämään koodi loogisiin ryhmiin ja estämään nimien törmäykset, joita voi esiintyä erityisesti silloin, kun kooditietokantasi sisältää useita kirjastoja. Tässä artikkelissa käsitellään seuraavia viitteitä:
- Nimitilan tarve
- Nimitilan määrittäminen C ++: ssa
- Muistutettavat asiat määritettäessä nimiavaruutta
- Nimitilan käyttäminen C ++: ssa
- Epäyhtenäiset nimitilat
- Sisäkkäiset nimitilat
Nimitilan tarve
Tarkastellaan tilannetta, kirjoitamme koodia, jolla on funktio nimeltä abc (), ja käytettävissä on toinen ennalta määritetty kirjasto, jolla on myös sama toiminto abc (). Nyt kääntäjänä kääntäjällä ei ole aavistustakaan, mihin abc () -funktion versioon viitataan koodissamme.
Tämän vaikeuden voittamiseksi nimitila on suunniteltu ja sitä käytetään lisätietona erottamaan samanlaiset toiminnot, muuttujat, luokat jne., Joilla on sama nimi ja joita on saatavana eri kirjastoissa. Nimiavaruuden avulla voimme määrittää kontekstin, jossa nimet määritetään. Pohjimmiltaan nimitila määrittelee laajuuden.
Kaikki C ++ - standardin mukaiset kirjastotyypit ja toiminnot ilmoitetaan standardin nimitilassa tai standardin sisällä olevissa nimitiloissa, joten sitä käytetään laajasti useimmissa ohjelmissa.
Nimitilan määrittäminen
Nimitilan määrittelemiseksi aloitetaan avainsanan nimiavaruus ja sen jälkeen nimitilan nimi seuraavasti:
nimiavaruus nimiavaruuden_nimi {int a, b // koodiselvitykset, joissa // a ja b on ilmoitettu // nimitilan_nimen laajuudessa}
Muistutettavat asiat määritettäessä nimiavaruutta
- Nimitila-ilmoitukset näkyvät vain maailmanlaajuisesti.
- Nimitila-ilmoituksilla ei ole käyttöoikeuksien määrityksiä.
- Nimitila-ilmoitukset voidaan sijoittaa toiseen nimiavaruuteen.
- Nimiavaruuden määritelmän sulkumerkinnän jälkeen ei tarvitse antaa puolipistettä.
- Nimitilan määrittely voidaan jakaa useille yksiköille.
#include nimitilan käyttäminen vakio nimitila 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 }
Tuotos:
Yllä olevassa esimerkissä funktion func () määrittämiseksi käytämme nimiavaruuskäsitettä. Määritämme ensimmäisen funktion nimitilassa first_function jatoinen funktio nimitilassa toinen_toiminto. Näiden toimintojen kutsumiseksi käytämme laajuusresoluutiooperaattoria seuraavalla tavalla - first_function :: func () ja second_function :: func ().
Nimitilan käyttäminen C ++: ssa
Nimitilaa voi käyttää ohjelmassa kolmella tavalla,
- Käyttävä direktiivi
- Käyttöilmoitus
- Laajuuden tarkkuuden operaattori (: :)
Käyttävä direktiivi
Voimme välttää nimiavaruuksien esivalmistamisen käyttämällä nimitiladirektiivi. käyttämällä avainsanan avulla voimme tuoda koko nimitilan ohjelmallesi maailmanlaajuisesti. Sitä voidaan käyttää nimitilan tuomiseen toiseen nimitilaan tai mihin tahansa ohjelmaan vaatimuksemme mukaan.
suhde java ja javascript
Harkitse otsikkotiedostoa Namespace_first.h:
nimiavaruus Ensimmäinen {int a class First_class {int i}}
Yllä olevan nimitilan otsikkotiedoston sisällyttäminen Namespace_second.h-tiedostoon: sisällytä 'Namespace_first.h'
oppia tietotekniikkaa askel askeleelta
nimiavaruus toinen {käyttäen nimitilaa Ensimmäinen Ensimmäinen_luokka obj y y}
Tuomme nimitilan_Ensimmäinen nimitilaan_Toiseksi, joten luokka First_class on nyt käytettävissä nimitilan_Toinen. Siksi voimme kirjoittaa seuraavan ohjelman erilliseen tiedostoon, sanokaamme new_file.cpp.
#include 'Namespace_second.h' void test () {käyttäen nimiavaruutta Second // luokan objektin luominen First_class First_class obj2}
Siten , käyttödirektiivi helpottaa nimitilan käyttöä C ++: ssa missä haluat.
Käyttöilmoitus
Tuodaan using-deklaraatiossa yksi tietty nimi kerrallaan, joka on käytettävissä vain nykyisen laajuuden sisällä, ja sitä kutsutaan laajuuden resoluution avulla. HUOMAUTUS: using-deklarationilla tuotu nimi voi ohittaadirektiivin avulla tuotun nimen. Voimme nähdä tämän alla olevasta esimerkistä.
Tarkastellaan otsikkotiedostoa New_File.h:
nimiavaruus Ensimmäinen {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }
Luodaan nyt uusi ohjelmatiedosto nimellä New_file_2.cpp alla olevalla koodilla:
#include 'Uusi_tiedosto.h' mitätöi B () {käyttäen nimiavaruutta First // käyttäen direktiiviä käyttäen Second :: A //: tä käyttämällä deklarointia First :: A () // etunimitilan A () luokka A () // kutsuu A () toisen nimiavaruuden}
Laajuuden tarkkuuden operaattori (: :)
Voimme nimenomaisesti määrittää minkä tahansa nimiavaruudessa ilmoitetun nimen käyttämällä nimitilan nimeä ja laajuuden tarkkuutta ' :: ' operaattori tunnuksella.
nimitila New_space {luokka X {staattinen int i public: void func ()} // luokan nimi ilmoitusluokka Y} // alustetaan staattisen luokan muuttuja int New_space :: X :: i = 23 luokka New_space :: Y {julkinen: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }
Epäyhtenäinen nimitila C ++: ssa
Kuten tiedämme, nimitila C ++: ssa voidaan määritellä useissa osissa, joten se koostuu sen erikseen määriteltyjen osien summasta. Joten, jos nimitilan yksi osa vaatii toisessa tiedostossa määritetyn nimen, kyseinen nimi on silti ilmoitettava sen laajuudessa. Seuraavan nimiavaruuden kirjoittaminen seuraavalla tavalla joko määrittelee uuden nimiavaruuden tai lisää uusia elementtejä olemassa olevaan:
nimitila nimitilan_nimi {// koodirunko}
Sisäkkäinen nimitila C ++: ssa
Nimitilat voidaan sijoittaa helposti ja voimme määrittää yhden nimiavaruuden toisen nimiavaruuden sisällä seuraavasti:
nimitila nimitilan_nimi1 {// nimitilan_nimi1 nimitila nimitila nimitilan_nimi2 {// koodirungon sisäkkäinen nimitilan avaruuden_nimi2}}
Tämän avulla olemme päässeet C ++ -artikkelin nimiavaruuteen. Toivon, että sait käsityksen siitä, mikä tarkalleen on nimitila C ++: ssa ja mitkä ovat sen eri tapoja määritellä. Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia Java-kehyksiä, kuten Hibernate & Spring.
Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.