Hemos introducido espacios de nombres en el siguiente conjunto 1.
Espacio de nombres en C++ | Conjunto 1 (Introducción)
Definiendo un espacio de nombres:
cortar matriz java
Una definición de espacio de nombres comienza con la palabra clave espacio de nombres seguida del nombre del espacio de nombres de la siguiente manera:
espacio de nombres nombre_espacio_nombres
{
// declaraciones de código, es decir, variable (int a;)
método (void add();)
clases ( clase estudiante{};)
}
Cabe señalar que no hay punto y coma (;) después de la llave de cierre.
Para llamar a la versión habilitada para espacios de nombres de una función o variable, anteponga el nombre del espacio de nombres de la siguiente manera:
nombre_espacio_nombre: :código; // el código podría ser una función o clase variable.
La directiva de uso:
cadena dividida c ++
También puede evitar anteponer espacios de nombres con la directiva de espacio de nombres. Esta directiva le dice al compilador que el código posterior utiliza nombres en el espacio de nombres especificado.
Por tanto, el espacio de nombres está implícito en el siguiente código:
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } using namespace first_space; int main () { // This calls function from first name space. func(); return 0; }
Los nombres introducidos en una directiva de uso obedecen a reglas de alcance normales. El nombre es visible desde el punto de la directiva de uso hasta el final del alcance en el que se encuentra la directiva. Las entidades con el mismo nombre definidas en un ámbito externo están ocultas.
Espacios de nombres anidados:
Los espacios de nombres se pueden anidar donde puede definir un espacio de nombres dentro de otro espacio de nombres de la siguiente manera:
SYNTAX: namespace namespace_name1 { // code declarations namespace namespace_name2 { // code declarations } } Puede acceder a los miembros del espacio de nombres anidado utilizando operadores de resolución de la siguiente manera:
// para acceder a los miembros de namespace_name2
usando el espacio de nombres namespace_name1::namespace_name2;
// para acceder a los miembros del espacio de nombres:nombre1
usando el espacio de nombres namespace_name1;
En las declaraciones anteriores, si está utilizando namespace_name1, los elementos de namespace_name2 estarán disponibles en el alcance de la siguiente manera:
ordenar una matriz javaC++
#include using namespace std; // first name space namespace first_space { void func() { cout << 'Inside first_space' << endl; } // second name space namespace second_space { void func() { cout << 'Inside second_space' << endl; } } } using namespace first_space::second_space; int main () { // This calls function from second name space. func(); return 0; }
También es posible crear más de un espacio de nombres en el espacio global. Esto se puede hacer de dos maneras.
-
Producción:
-
Producción:
- Se pueden utilizar directamente en el mismo programa y se utilizan para declarar identificadores únicos.
- En espacios de nombres sin nombre, el nombre del espacio de nombres no se menciona en la declaración del espacio de nombres.
- El nombre del espacio de nombres lo genera de forma única el compilador.
- Solo se podrá acceder a los espacios de nombres sin nombre que haya creado dentro del archivo en el que los creó.
- Los espacios de nombres sin nombre reemplazan la declaración estática de variables.
CPP
// A C++ program to show more than one namespaces // with different names. #include using namespace std; // first name space namespace first { int func() { return 5; } } // second name space namespace second { int func() { return 10; } } int main() { // member function of namespace // accessed using scope resolution operator cout << first::func() <<"n"; cout << second::func() <<"n"; return 0; }
5 10
También es posible crear dos bloques de espacio de nombres con el mismo nombre. El segundo bloque de espacio de nombres no es más que la continuación del primer espacio de nombres. En palabras más simples, podemos decir que ambos espacios de nombres no son diferentes, sino que en realidad son iguales y se definen en partes.
CPP
// C++ program to demonstrate namespace extension #include using namespace std; // first name space namespace first { int val1 = 500; } // rest part of the first namespace namespace first { int val2 = 501; } int main() { cout << first::val1 <<"n"; cout << first::val2 <<"n"; return 0; }
500 501
Espacios de nombres sin nombre
// C++ program to demonstrate working of unnamed // namespaces #include using namespace std; // unnamed namespace declaration namespace { int rel = 300; } int main() { cout << rel << "n"; // prints 300 return 0; }
Producción:
sueño javascript
300