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.