Latest web development tutorials

espacio de nombres C ++

Imagine una situación en la que hay una clase llamada Zara dos estudiantes, con el fin de distinguir claramente entre ellos, usamos el nombre fuera, tuvimos que utilizar alguna información adicional, como su dirección de casa o sus padres nombre, etc.

La misma situación también aparece en la aplicación de C ++. Por ejemplo, es posible escribir una función llamada xyz (), en otra biblioteca a disposición también hay una misma función XYZ (). Por lo tanto, el compilador no puede determinar lo que está utilizando una función XYZ ().

Por lo tanto, la introducción del concepto deespacios de nombres, diseñado para resolver los problemas anteriores, se puede utilizar como información adicional para distinguir diferentes bibliotecas con las mismas funciones de nombres, clases, variables, y así sucesivamente.El uso de espacio de nombres que se define contexto. En esencia, el espacio de nombres es la definición de un rango.

La definición de espacios de nombres

Definido palabra clave namespaceespacio de nombres, seguido por el nombre del espacio de nombres, como sigue:

namespace namespace_name {
   // 代码声明
}

Con el fin de llamar a una función o variable, con un espacio de nombres, debe preceder con el nombre del espacio de nombres, de la siguiente manera:

name::code;  // code 可以是变量或函数

Vamos a ver cómo la definición de espacio de nombres para la entidad y la otra función o variable:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Inside first_space
Inside second_space

el uso de la instrucción

Se puede utilizar elespacio de nombres utilizando Directiva, de modo que cuando no se puede utilizar un espacio de nombres con el prefijo nombre de espacio de nombres.Esta directiva indica al compilador que el código subsiguiente usará el nombre del espacio de nombres especificado.

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Inside first_space

utilizando instrucciones también se pueden utilizar para especificar los elementos específicos de espacio de nombres. Por ejemplo, si sólo va a utilizar la sección de espacio de nombres std cout, puede utilizar la siguiente declaración:

using std::cout;

código posterior al utilizar cout no se puede agregar el nombre de espacio de nombres como prefijo, pero los espacios de nombresstd otros artículos todavía tienen que añadir el nombre de espacio de nombres como prefijo, de la siguiente manera:

#include <iostream>
using std::cout;

int main ()
{
 
   cout << "std::endl is used with std!" << std::endl;
   
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

std::endl is used with std!

Nombreusando las instrucciones introducidas seguir las reglas de ámbito normales.Nombres deuna directiva usingvisibles inicialmente hasta que el extremo superior del rango. En este caso, el mismo nombre fuera del alcance de la definición de entidades está oculto.

espacio de nombres discontinuo

Espacio de nombres se puede definir de varias partes diferentes, por lo que el espacio de nombres se compone de varias partes composición definida por separado. Varios componentes de un espacio de nombres se pueden propagar a través de múltiples archivos.

Por lo tanto, si la parte del espacio de nombres de la necesidad de solicitar un nombre definido en otro archivo, usted todavía tiene que declarar el nombre. La siguiente definición de espacio de nombres puede definir un nuevo espacio de nombres, que puede ser para un espacio de nombres existente para agregar nuevos elementos:

namespace namespace_name {
   // 代码声明
}

espacios de nombres anidados

Los espacios de nombres se pueden anidar, puede definir otro espacio de nombres en un espacio de nombres, de la siguiente manera:

namespace namespace_name1 {
   // 代码声明
   namespace namespace_name2 {
      // 代码声明
   }
}

Se puede utilizar el operador :: para acceder a los miembros de espacios de nombres anidados:

// 访问 namespace_name2 中的成员
using namespace namespace_name1::namespace_name2;

// 访问 namespace:name1 中的成员
using namespace namespace_name1;

En la declaración anterior, si está utilizando namespace_name1, a continuación, dentro de la gama de elementos namespace_name2 también disponibles de la siguiente manera:

#include <iostream>
using namespace std;

// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
   // 第二个命名空间
   namespace second_space{
      void func(){
         cout << "Inside second_space" << endl;
      }
   }
}
using namespace first_space::second_space;
int main ()
{
 
   // 调用第二个命名空间中的函数
   func();
   
   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Inside second_space