Notará que las directivas using están
presentes en casi todos los ficheros cpp
de esto libro, normalmente en la forma:
using namespace std;
Como std
es el espacio
de nombres que encierra la librería Estándar C++ al completo,
esta directiva using
en particular permite
que se puedan usar los nombres de la librería Estándar
C++. Sin embargo, casi nunca verá una directiva
using
en un fichero de cabecera (al menos,
no fuera de un bloque). La razón es que la directiva
using
elimina la protección de ese espacio
de nombres en particular, y el efecto dura hasta que termina
la unidad de compilación actual. Si pone una directiva
using
(fuera de un bloque) en un fichero de
cabecera, significa que esta perdida de «protección del
espacio de nombres» ocurrirá con cualquier fichero que
incluya este fichero de cabecera, lo que a menudo significa
otros ficheros de cabecera, es muy fácil acabar
«desactivando» los espacios de nombres en todos
sitios, y por tanto, neutralizando los efectos beneficiosos de
los espacios de nombres.
En resumen: no ponga directivas using
en
ficheros de cabecera.