Share via


namespace (Declaración)

Una declaración de espacio de nombres identifica y asigna un nombre único a un espacio de nombres declarado por el usuario.

namespace identifier

Comentarios

Estos espacios de nombres se utilizan para resolver el problema del conflicto de nombres en programas y bibliotecas grandes. Los programadores pueden utilizar espacios de nombres para desarrollar nuevos componentes de software y bibliotecas sin generar conflictos de nomenclatura con los componentes existentes.

Por ejemplo:

// namespace_declaration1.cpp
namespace X
{
   int i;
   double j;
}
int main()
{
   X::i++;
}

La sintaxis de una definición de espacio de nombres es:

namespace identifier
{
   [ declaration-list ]
}

Un elemento namespace-definition se puede anidar en otro elemento namespace-definition. Cada namespace-definition debe aparecer en el ámbito de archivo o directamente dentro de otro elemento namespace-definition.

Por ejemplo:

// namespace_declaration2.cpp
// C2870 expected
namespace A
{
   int j = 3;
   int f(int k);
}

namespace Outer
{
   int n = 6;
   int func(int num);

   namespace Inner
   {
      float f = 9.993;
   }
}

int main()
{
   namespace local   // C2870: not at global scope
   {
   }
}

A diferencia de otras regiones declarativas, la definición de un espacio de nombres se puede dividir en varias partes de una única unidad de traducción.

// namespace_declaration3.cpp
namespace A
{
   // declare namespace A variables
   int i;
   int j;
}

namespace B
{
}

namespace A
{
   // declare namespace A functions
   void func(void);
   int int_func(int i);
}

int main()
{
}

Cuando un espacio de nombres se continúa de esta manera, después de la definición inicial, la continuación se denomina definición de espacio de nombres extendida. La definición original de ese espacio de nombres recibe el nombre de definición de espacio de nombres original.

El uso de esta notación podría resultar complicado con nombres largos o en programas de gran tamaño. La declaración using, la directiva using y los alias de espacio de nombres proporcionan maneras más sencillas de hacer referencia a los miembros del espacio de nombres.

Una declaración de espacio de nombres, si implica un nuevo espacio de nombres, un espacio de nombres sin nombre o una definición de espacio de nombres extendida, debe ir acompañada de un cuerpo del espacio de nombres delimitado entre llaves. La instrucción

namespace X;

es un error de sintaxis. La instrucción

namespace X{};

no es un error de sintaxis, pero no tiene sentido.

Para obtener información general, vea Espacios de nombres.

El identificador de una definición de espacio de nombres original debe ser único en la región declarativa en la que se utiliza. El identificador es el nombre del espacio de nombres y se utiliza para hacer referencia a sus miembros.

La región declarativa de una definición de espacio de nombres es su cuerpo. El cuerpo debe incluirse entre llaves ({}) y puede contener declaraciones o definiciones de variables, funciones, objetos, plantillas y espacios de nombres anidados. Las declaraciones de declaration-list se consideran miembros del espacio de nombres. El nombre de cada miembro del espacio de nombres se califica automáticamente con el nombre de su espacio de nombres y el operador de resolución de ámbito.

Vea también

Referencia

Espacios de nombres (C++)

Palabras clave de C++

Espacios de nombres sin nombre