namespaces c
Una descripción completa de los espacios de nombres en C ++ con ejemplos simples.
Hasta ahora, en nuestros tutoriales anteriores, hemos visto todo sobre variables, declaraciones, funciones y otras entidades similares utilizadas en C ++.
Mientras se desarrollan aplicaciones en C ++, pueden surgir algunas situaciones peculiares, como el uso dos veces de los mismos nombres de variable o funciones definidas con los mismos prototipos, etc. .
=> Consulte la guía de formación perfecta de C ++ aquí.
Lo que vas a aprender:
- ¿Qué es el espacio de nombres?
- Definición de un espacio de nombres
- Acceso a miembros del espacio de nombres
- La directiva de uso
- Espacios de nombres anidados
- Espacios de nombres externos
- Espacios de nombres contiguos
- Conclusión
- Lectura recomendada
¿Qué es el espacio de nombres?
Veamos el siguiente ejemplo:
|_+_|Producción:
En la función 'int main ()':
8:10: error: declaración en conflicto 'double var'
7: 7: nota: declaración anterior como 'int var'
En el ejemplo anterior, hemos definido dos variables con diferentes tipos pero con el mismo identificador. Entonces, cuando compilamos este ejemplo, obtenemos un error como se muestra en la ventana de Salida. Estas declaraciones en conflicto surgen debido a que se usa el mismo identificador para nombrar dos variables.
Este tipo de situaciones genera ambigüedad en las aplicaciones.
C ++ introduce algo llamado ' espacios de nombres ”Para resolver este problema. El espacio de nombres en C ++ es como un paquete, una región o una biblioteca que se usa para diferenciar entre la variable o funciones con los mismos identificadores.
Un espacio de nombres puede contener variables, funciones, clases u otros objetos e incluso otro espacio de nombres. Se puede hacer referencia a cada miembro del espacio de nombres mediante un espacio de nombres. Esto ayuda al compilador a diferenciar entre varias entidades de programación incluso si tienen los mismos nombres.
Definición de un espacio de nombres
En C ++, podemos definir un espacio de nombres usando la palabra clave ' espacio de nombres ' Como se muestra abajo:
|_+_|Entonces, si necesitamos definir un espacio de nombres llamado 'test_space', podemos hacerlo de la siguiente manera:
|_+_|La declaración anterior define un espacio de nombres llamado 'test_space'. Como se muestra, tiene una variable entera var como miembro.
Acceso a miembros del espacio de nombres
Ahora, hemos definido nuestro propio espacio de nombres 'test_space' y ¿cómo accedemos al contenido de este espacio de nombres?
En el programa C ++, podemos acceder a los miembros del espacio de nombres usando la sintaxis:
|_+_|Por lo tanto, se puede acceder a la variable entera var declarada en el espacio de nombres 'test_space' anterior de la siguiente manera:
|_+_|Consulte el ejemplo completo a continuación para demostrar los espacios de nombres y su uso.
|_+_|Producción:
var local = 20,53
test_space :: var = 10
Hemos demostrado todo sobre la creación y el acceso al espacio de nombres en el ejemplo de programación anterior. Como vemos, “test_space” es un espacio de nombres que hemos definido. Tiene definida una única variable entera var. Luego, en la función principal, tenemos otra variable doble var que se inicializa.
Posteriormente mostramos ambas variables. Tenga en cuenta que si bien la variable doble local dentro de la principal se puede imprimir directamente, para imprimir la variable de espacio de nombres, tenemos que precederla con el nombre del espacio de nombres.
Esto también ha resuelto el problema de los choques entre las variables debido a los mismos nombres que discutimos anteriormente.
La directiva de uso
En nuestro tema anterior, vimos que podemos acceder a los miembros del espacio de nombres usando namespace_name :: namespace_member.
Si no queremos especificar un nombre de espacio de nombres en todas partes del programa, podemos hacer uso de la ' usando ”Directiva para incluir el espacio de nombres en el programa.
Esto se hace de la siguiente manera:
|_+_|Producción:
var local = 20,53
test_space :: var = 10
En el ejemplo anterior, hemos utilizado dos declaraciones después de definir el espacio de nombres 'test_space'.
Estos son:
|_+_|La primera declaración usa la declaración para acceder al espacio de nombres 'std', que es un espacio de nombres estándar predefinido en la biblioteca C ++. Este espacio de nombres se utiliza para acceder a varias funciones como cin, cout, etc.
La segunda declaración se usa para incluir el espacio de nombres 'test_space' en el programa.
En la función principal, podemos ver que las funciones como cout y la variable var no necesitan estar precedidas por un nombre de espacio de nombres. Podemos referirnos directamente a ellos. Pero como var tiene un conflicto de nombre con una variable local en la función principal, lo referimos usando el operador de resolución de alcance (: :) ya que los espacios de nombres también siempre tienen un alcance global.
Espacios de nombres anidados
C ++ también permite tener espacios de nombres anidados, es decir, un espacio de nombres definido dentro de otro espacio de nombres.
La sintaxis general de los espacios de nombres anidados es la siguiente:
|_+_|Si necesitamos acceder a ns2_code, podemos acceder a él de la siguiente manera:
|_+_|Demostremos los espacios de nombres anidados usando el siguiente ejemplo de código.
|_+_|Producción:
var local = 20,53
primero :: var = 10
segundo :: var = 20
Hemos utilizado espacios de nombres anidados en el programa anterior. Tenga en cuenta la forma en que se usa la directiva using para acceder a los espacios de nombres. No es suficiente hacer referencia solo al espacio de nombres más interno una vez. Si necesitamos un código del espacio de nombres más externo, debemos referirlo por separado.
Podemos usar otro nombre para los espacios de nombres conocido como 'alias'. Esto es especialmente útil cuando se utilizan espacios de nombres anidados y el grado de anidamiento es alto.
Podemos demostrar el alias de un espacio de nombres modificando el ejemplo anterior.
|_+_|Producción:
var local = 20,53
primero :: var = 10
segundo :: var = 20
Tenga en cuenta el alias anidado que se define para el espacio de nombres first :: second. Una vez que se define un alias, podemos referirnos al espacio de nombres usando un nombre de alias.
Espacios de nombres externos
A veces, cuando tenemos demasiados espacios de nombres para usar en nuestra aplicación, es posible que deseemos colocar todos los espacios de nombres en un archivo separado. Esto se puede hacer fácilmente. Cuando los espacios de nombres están en un archivo separado, solo incluimos ese archivo en nuestro programa y luego usamos directamente los espacios de nombres y su contenido en nuestro programa.
Por ejemplo, si tenemos un archivo llamado ns.h que contiene el siguiente espacio de nombres.
|_+_|Ahora en nuestro programa, podemos usar el espacio de nombres 'primero' de la siguiente manera:
|_+_|Entonces, una vez que incluimos el archivo que contiene los espacios de nombres en nuestro programa, podemos usar los espacios de nombres como si estuvieran declarados globalmente en el mismo programa.
Espacios de nombres contiguos
C ++ también nos permite definir algo llamado como espacios de nombres contiguos. Los espacios de nombres contiguos son los espacios de nombres que se definen más de una vez por tener el mismo nombre. En realidad, estos no son espacios de nombres separados, sino extensiones del mismo espacio de nombres.
La puerta de enlace predeterminada no está disponible Windows 8
Los espacios de nombres contiguos son evidentes en el siguiente ejemplo.
|_+_|Producción:
var local = 20,53
primero :: var = 10
segundo :: var = 20
Observe en el ejemplo anterior que hemos definido el mismo espacio de nombres dos veces. En la primera definición, tenemos una variable llamada var. Mientras que en la segunda declaración tenemos otro espacio de nombres definido.
En la función principal, hemos accedido a los miembros del espacio de nombres externo e interno y notamos que se puede acceder fácilmente a los miembros.
Este es el ejemplo de espacios de nombres contiguos, que a veces también se conocen como 'espacios de nombres discontinuos'. Sus definiciones parecen separadas pero, en realidad, son espacios de nombres continuos.
Conclusión
Con esto, llegamos al final de este tutorial sobre espacios de nombres en C ++. Espacios de nombres de una manera que nos permite separar nuestro código en diferentes espacios o regiones para que tengamos claridad al leerlo y también al usar sus miembros.
En nuestros tutoriales posteriores, aprenderemos más sobre los diversos temas básicos de C ++ como manejo de excepciones, entrada / salida de archivos, etc.
=> Consulte aquí para ver los tutoriales de capacitación de la A a la Z de C ++ aquí.
Lectura recomendada
- La mejor serie de tutoriales de C # GRATIS: la guía definitiva de C # para principiantes
- Pruebas de carga con los tutoriales de HP LoadRunner
- Funciones de biblioteca en C ++
- 70+ MEJORES Tutoriales de C ++ para aprender programación C ++ GRATIS
- Programación orientada a objetos en C ++
- Listas de inicializadores en C ++
- Iteradores en STL
- Encapsulación en C ++