2012-08-15 15 views
6

Duplicar posibles:
Why is 'using namespace std;' considered a bad practice in C++?estilo y espacios de nombres

He visto algunos ejemplos de código, donde la gente usa, por ejemplo, std::cout mientras que en otros lugares la gente tendrá using namespace std; en la parte superior de simplicidad en su lugar. ¿Cuál es generalmente preferido?

+2

Otra alternativa es 'using std :: cout'. – hmjd

+6

[¿Por qué 'using namespace std;' se considera una mala práctica?] (Http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-a-bad-practice-in-c) – chris

+3

Si desea una regla simple: No use las directivas 'using', nunca (es decir' using namespace abc; '); y use declaraciones 'using' (por ejemplo' usando Base :: foo') solo para mostrar y controlar ADL. Sin embargo, use alias de espacio de nombres para mantener ordenado el código fuente. –

Respuesta

3

Uso std::cout para evitar cualquier potencial nombre de enfrentamientos. Si usa using namespace std;, rellenará su espacio de nombres global con todo el nombre estándar que pueda entrar en conflicto con las clases o nombres de funciones que usted u otra persona en su equipo haya escrito. Esto está muy bien explicado en el C++ faq lite y en SO

2

Yo personalmente uso la denominación del espacio de nombres completo al escribir el código, p. std::string, etc. Hace las cosas más claras para cualquiera que lea eso, qué función el desarrollador quiere usar.

he visto el siguiente dicho:

escribir una vez, leer mil veces ...

:)

0

en primer lugar que usted debe nunca se using namespace en una cabecera - es posible que ya tengan conocimiento de esto. La razón es que traerá el using a cualquier archivo fuente que lo incluya.

Incluso en el nivel de archivo fuente, prefiero calificar explícitamente las funciones de biblioteca estándar y las clases liek std::cout. Sin embargo, en algunos casos utilizaré el uso específico en su lugar por conveniencia (using std:endl por ejemplo). Por lo general, prefiero la calificación explícita.

Cuestiones relacionadas