Todo lo que necesita saber sobre el espacio de nombres en C ++



Este artículo le proporcionará un conocimiento detallado y completo del espacio de nombres en C ++. Son varios tipos y usos en cualquier programa.

El espacio de nombres en C ++ se usa para organizar el código en grupos lógicos y para prevenir colisiones de nombres que pueden ocurrir especialmente cuando su base de código incluye múltiples bibliotecas. En este artículo se cubrirán los siguientes consejos:

La necesidad de un espacio de nombres

Considere una situación, estamos escribiendo un código que tiene una función llamada abc () y hay otra biblioteca predefinida disponible que también tiene la misma función abc (). Ahora, en el momento de la compilación, el compilador no tiene idea de a qué versión de la función abc () nos estamos refiriendo dentro de nuestro código.





Espacio de nombres en c ++

Para superar esta dificultad se diseña el espacio de nombres y se utiliza como información adicional para diferenciar funciones, variables, clases, etc. similares con el mismo nombre disponibles en diferentes bibliotecas. Usando el espacio de nombres, podemos definir el contexto en el que se definen los nombres. En esencia, un espacio de nombres define un ámbito.



Todos los tipos y funciones de biblioteca estándar de C ++ se declaran en el espacio de nombres std o en los espacios de nombres anidados dentro de std, por lo que se usa ampliamente en la mayoría de los programas.

estructuras de datos básicas en java

Definición de un espacio de nombres

Para definir el espacio de nombres, comenzamos con la palabra clave espacio de nombres seguido del nombre del espacio de nombres de la siguiente manera:

namespace namespace_name {int a, b // declaraciones de código donde // a y b se declaran en // el alcance de namespace_name}

Puntos para recordar al definir un espacio de nombres

  • Las declaraciones de espacio de nombres aparecen solo en el ámbito global.
  • Las declaraciones de espacio de nombres no tienen especificadores de acceso.
  • Las declaraciones de espacio de nombres se pueden anidar dentro de otro espacio de nombres.
  • No es necesario poner punto y coma después de la llave de cierre de la definición del espacio de nombres.
  • La definición del espacio de nombres se puede dividir en varias unidades.
#incluya el uso del espacio de nombres 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 }

Salida:



En el ejemplo anterior para definir la función func () dos veces diferentes, usamos el concepto de espacio de nombres. Definimos la primera función en el espacio de nombres first_function ysegunda función en el espacio de nombres second_function. Para llamar a estas funciones usamos el operador de resolución de alcance de la siguiente manera: first_function :: func () y second_function :: func ().

Usando el espacio de nombres en C ++

Hay tres formas de utilizar un espacio de nombres en el programa,

  1. La directiva using
  2. La declaración de uso
  3. Operador de resolución de alcance (: :)

La directiva using

Podemos evitar anteponer los espacios de nombres con el utilizando directiva de espacio de nombres. utilizando La palabra clave nos permite importar un espacio de nombres completo a su programa con un alcance global. Se puede utilizar para importar un espacio de nombres a otro espacio de nombres o cualquier programa según nuestro requisito.

Considere un archivo de encabezado Namespace_first.h:

espacio de nombres First {int a class First_class {int i}}

Incluyendo el archivo de encabezado del espacio de nombres anterior en el archivo Namespace_second.h: incluya 'Namespace_first.h'

espacio de nombres Second {usando el espacio de nombres First First_class obj int y}

Importamos el espacio de nombres_First al espacio de nombres_Segundo, por lo tanto, la clase Primera_clase ahora estará disponible en el espacio de nombres_Segundo. Por lo tanto, podemos escribir el siguiente programa en un archivo separado, digamos new_file.cpp.

#include 'Namespace_second.h' void test () {using namespace Second // creando objeto de la clase First_class First_class obj2}

Por lo tanto , la directiva using hace que sea mucho más fácil usar un espacio de nombres en C ++, donde quiera.

La declaración de uso

En la declaración-using, importamos un nombre específico a la vez que está disponible solo dentro del alcance actual y se llama con la ayuda de la resolución del alcance. NOTA: El nombre importado con la declaración using puede anular el nombre importado con la directiva using. Podemos ver esto en el siguiente ejemplo.

Consideremos un archivo de encabezado New_File.h:

espacio de nombres First {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

Ahora creemos un nuevo archivo de programa con el nombre New_file_2.cpp con el siguiente código:

#include 'New_file.h' void B () {usando el espacio de nombres First // usando la directiva usando Second :: A // usando la declaración First :: A () // clase A () del primer espacio de nombres A () // llama A () del segundo espacio de nombres}

Operador de resolución de alcance (: :)

Podemos especificar explícitamente cualquier nombre declarado en un espacio de nombres utilizando el nombre del espacio de nombres y la resolución del alcance ' ::” operador con el identificador.

mejor java ide para linux
namespace New_space {class X {static int i public: void func ()} // declaración del nombre de la clase class Y} // Inicializando la variable de clase 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 }

Espacio de nombres no contiguo en C ++

Como sabemos, un espacio de nombres en C ++ se puede definir en varias partes, por lo que se compone de la suma de sus partes definidas por separado. Por lo tanto, si una parte del espacio de nombres requiere un nombre definido en otro archivo, ese nombre aún debe declararse en su alcance. Escribir el siguiente espacio de nombres de la siguiente manera define un nuevo espacio de nombres o agrega nuevos elementos a uno existente:

namespace namespace_name {// cuerpo del código}

Espacio de nombres anidado en C ++

Los espacios de nombres se pueden anidar fácilmente y podemos definir un espacio de nombres dentro de otro espacio de nombres de la siguiente manera:

namespace namespace_name1 {// cuerpo del código de namespace_name1 namespace namespace_name2 {// cuerpo del código anidado namamespace_name2}}

Con esto, llegamos al final del artículo Espacio de nombres en C ++. Espero que tengas una idea de qué es exactamente un espacio de nombres en C ++ y cuáles son las diferentes formas de definirlo. Si desea obtener más información, consulte el por Edureka, una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.