Contras de usar todo el espacio de nombres en C++

Un espacio de nombres es una región declarativa que proporciona un alcance a los identificadores (los nombres de tipos, funciones, variables, etc.) dentro de él. Los espacios de nombres se utilizan para organizar el código en grupos lógicos y para evitar las colisiones de nombres que pueden ocurrir, especialmente cuando su base de código incluye varias bibliotecas.

Consulte la necesidad de espacio de nombres en C++ para obtener más detalles.

Supongamos que necesitamos dos archivos de encabezado para un proyecto de software:
1: Header1.h
      -namespace one

2: Header2.h -espacio de
      nombres dos

Código C++:

Encabezado1.h :

namespace one
{
    /*Function to print name of the namespace*/
    void print()
    {
        std :: cout << "This is one" << std :: endl;
    }
}

Encabezado2.h

namespace two
{
    /*Function to print name of the namespace*/
    void print()
    {
        std :: cout << "This is two" << std :: endl;
    }
}

Archivo de código fuente

/*Including headers*/
#include <iostream>
#include "Header1.h"
#include "Header2.h"
  
/*Using namespaces*/
using namespace std;
using namespace one;
using namespace two;
  
/*Driver code*/
int main()
{
    /*Ambiguity*/
    print();
}

Producción:

Error: Call of overloaded print() is ambiguous.

Para superar esta situación, usamos objetos de espacio de nombres de forma independiente
a través del operador de resolución de alcance.

Archivo de código fuente

/*Including headers*/
#include <iostream>
#include "Header1.h"
#include "Header2.h"
  
/*Driver code*/
int main()
{
    /*Using function of first header*/
    one :: print();
      
    /*Using function of second function*/
    two :: print();
}

Referencia:
http://www.cplusplus.com/forum/beginner/25538/
https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice

Subdominios avanzados del espacio de nombres: https://www.geeksforgeeks.org/namespace-in-c-set-2-extending-namespace-and-unnamed-namespace/ https://www.geeksforgeeks.org/namespace-c -set-3-creating-header-nesting-aliasing-accessing/

Archivo de espacio de nombres GeeksforGeeks

Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *