Tot el que heu de saber sobre l'espai de noms a C ++



Aquest article us proporcionarà un coneixement detallat i complet de l'espai de noms en C ++. Hi ha diversos tipus i usos en qualsevol programa.

L’espai de noms a C ++ s’utilitza per organitzar el codi en grups lògics i per evitar col·lisions de noms que es poden produir especialment quan la vostra base de codis inclou diverses biblioteques. En aquest article es tractaran els següents indicadors:

què és una interfície de marcador a Java

La necessitat d’espai de noms

Penseu en una situació, estem escrivint un codi que té una funció anomenada abc () i hi ha una altra biblioteca predefinida disponible que també té la mateixa funció abc (). Ara, en el moment de la compilació, el compilador no té idea de quina versió de la funció abc () ens referim al nostre codi.





Espai de noms en c ++

Per superar aquesta dificultat, es dissenya l'espai de noms i s'utilitza com a informació addicional per diferenciar funcions, variables, classes, etc. similars amb el mateix nom disponible a diferents biblioteques. Mitjançant l’espai de noms, podem definir el context en què es defineixen els noms. En essència, un espai de noms defineix un abast.



Tots els tipus i funcions de biblioteques estàndard C ++ es declaren a l'espai de noms std o als espais de noms niats dins de std, de manera que s'utilitza àmpliament a la majoria dels programes.

Definició d'un espai de noms

Per definir l’espai de noms, comencem per la paraula clau seguida del nom de l’espai de noms de la manera següent:

espai de noms nom_espai de noms {int a, b // declaracions de codis on // a i b es declaren a l'abast de // nom_espai_noms}

Punts que cal recordar en definir un espai de noms

  • Les declaracions d'espai de noms només apareixen a l'abast global.
  • Les declaracions d’espai de noms no tenen cap especificador d’accés.
  • Les declaracions d'espai de noms es poden anidar dins d'un altre espai de noms.
  • No cal donar punt i coma després de la clausura de la definició de l’espai de noms.
  • La definició de l'espai de noms es pot dividir en diverses unitats.
#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 }

Sortida:



A l'exemple anterior per definir la funció func () dues vegades diferents, fem servir el concepte d'espai de noms. Definim la primera funció a l'espai de noms first_function isegona funció a l'espai de noms segona_funció. Per anomenar aquestes funcions utilitzem l’operador de resolució d’àmbit de la següent manera: first_function :: func () i second_function :: func ().

Ús de l'espai de noms a C ++

Hi ha tres maneres d’utilitzar un espai de noms al programa,

  1. La directiva d'ús
  2. La declaració d'ús
  3. Operador de resolució d'abast (: :)

La directiva d'ús

Podem evitar la prependència dels espais de noms amb el utilitzant directiva d’espai de noms. utilitzant La paraula clau ens permet importar tot un espai de noms al vostre programa amb un abast global. Es pot utilitzar per importar un espai de noms a un altre espai de noms o a qualsevol programa segons el nostre requisit.

Penseu en un fitxer de capçalera namespace_first.h:

espai de noms First {int a class First_class {int i}}

Inclou el fitxer de capçalera de l'espai de noms anterior al fitxer Namespace_second.h: incloeu 'Namespace_first.h'

namespace Second {using namespace First First_class obj int y}

Importem namespace_First a namespace_Second, per tant, la classe First_class ara estarà disponible a l’espai de noms_Second. Per tant, podem escriure el programa següent en un fitxer separat, diguem-ne fitxer_nou.cpp.

#include 'Namespace_second.h' void test () {utilitzant l'espai de noms Segon // creant objecte de classe First_class First_class obj2}

Per tant , la directiva d'ús fa que sigui molt més fàcil utilitzar un espai de noms a C ++, on vulgueu.

La declaració d'ús

A la declaració d'ús, importem un nom específic a la vegada que només està disponible dins de l'abast actual i s'anomena amb l'ajut de la resolució d'abast. NOTA: El nom importat amb la declaració d'ús pot anul·lar el nom importat amb la directiva d'ús. Ho podem veure a l'exemple següent.

Considerem un fitxer de capçalera New_File.h:

espai de noms Primer {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Ara creem un fitxer de programa nou amb el nom New_file_2.cpp amb el codi següent:

#include 'New_file.h' void B () {using namespace First // using directive using Second :: A // using statement First :: A () // class A () of First namespace A () // Calls A () del segon espai de noms}

Operador de resolució d'abast (: :)

Podem especificar explícitament qualsevol nom declarat en un espai de noms mitjançant el nom de l’espai de noms i la resolució d’abast ' :: ' operador amb l’identificador.

espai de noms Nou espai {classe X {static int i public: void func ()} // declaració de nom de classe classe Y} // Inicialització de variable de classe estàtica int New_space :: X :: i = 23 class New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

Espai de noms descontigu a C ++

Com sabem, un espai de noms en C ++ es pot definir en diverses parts, de manera que es compon de la suma de les seves parts definides per separat. Per tant, si una part de l’espai de noms requereix un nom definit en un altre fitxer, aquest nom encara s’ha de declarar al seu abast. Si escriviu l’espai de noms següent de la manera següent, es defineix un espai de noms nou o s’afegeixen elements nous a un d’existent:

espai de noms nom_espai de noms {// cos del codi}

Espai de noms imbricat a C ++

Els espais de noms es poden anidar fàcilment i podem definir un espai de noms dins d’un altre espai de noms de la manera següent:

nom_espai_nom_espai_nom1 {// cos del codi de nom_espai_noms1 nom_espai_noms_espai_noms2 {// cos nom_nim espai_noms_nom2}}

Amb això, arribem al final de l’espai de noms a l’article C ++. Espero que tingueu una idea de què és exactament un espai de noms a C ++ i quines són les diferents maneres de definir-lo. Si voleu obtenir més informació, consulteu el per Edureka, una empresa d’aprenentatge en línia de confiança. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per formar-vos tant per a conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate & Spring

Tens alguna pregunta? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.