¿Por qué se usa "using namespace std;" considerado una mala práctica?
Frecuentes
Visto 900,965 veces
2843
Otros me han dicho que escribir using namespace std;
en el código es incorrecto, y que debería usar std::cout
y std::cin
directamente en su lugar.
¿Por qué es using namespace std;
considerado una mala práctica? ¿Es ineficiente o corre el riesgo de declarar variables ambiguas (variables que comparten el mismo nombre que una función en std
espacio de nombres)? ¿Afecta al rendimiento?
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ namespaces std using-directives c++-faq or haz tu propia pregunta.
No olvide que puede hacer: "using std :: cout;" lo que significa que no tiene que escribir std :: cout, pero no traiga todo el espacio de nombres std al mismo tiempo. - Bill
Es particularmente malo usar 'using namespace std' en el alcance del archivo en los archivos de encabezado. Usarlo en archivos de origen (* .cpp) en el alcance del archivo después de todas las inclusiones no es tan malo, ya que su efecto se limita a una sola unidad de traducción. Incluso menos problemático es usarlo dentro de funciones o clases, porque su efecto se limita al alcance de la función o clase. - sh-
Me desaconsejaría usar la directiva using pero para espacios de nombres específicos como
std::literals::chrono_literals
,Poco::Data:Keywords
,Poco::Units
y cosas que se ocupan de literales o trucos de legibilidad. Siempre que esté en archivos de implementación o de encabezado. Podría estar bien en un ámbito de función, supongo, pero aparte de los literales y demás, no es útil. - Ludovic Zenohate Lagouardette@Jon: No tiene nada que ver con el espacio de nombres std en particular. Mi énfasis estaba destinado a estar en "el alcance del archivo en los archivos de encabezado". Para ponerlo como un consejo: No use "using namespace" (std u otro) en el alcance del archivo en los archivos de encabezado. Está bien usarlo en archivos de implementación. Perdón por la ambigüedad. - sh-
Solo se considera una mala práctica en los encabezados. Está bien en archivos de origen que no se incluyen en otro lugar (es decir, archivos cpp). Vea la respuesta de @mattnewport a continuación. stackoverflow.com/a/26722134/125997 - Danra