"Usando el espacio de nombres" en los encabezados de c ++
En todos nuestros cursos de c ++, todos los profesores siempre ponenusing namespace std;
justo después de la#include
s en su.h
archivos. Esto me parece peligroso desde entonces, al incluir ese encabezado en otro programa, obtendré el espacio de nombres importado en mi programa, tal vez sin darme cuenta, con intención o sin querer (la inclusión del encabezado puede estar muy anidada).
Así que mi pregunta es doble: ¿tengo razón queusing namespace
no debe usarse en archivos de encabezado, y / o hay alguna forma de deshacerlo, algo como:
//header.h
using namespace std {
.
.
.
}
Una pregunta más en la misma línea: ¿debería un archivo de encabezado#include
todos los encabezados que corresponde a.cpp
necesita, solo aquellos que son necesarios para las definiciones de encabezado y permiten que.cpp
archivo#include
el resto, o ninguno y declara todo lo que necesita comoextern
?
El razonamiento detrás de la pregunta es el mismo que el anterior: no quiero sorpresas cuando incluyo.h
archivos.
Además, si tengo razón, ¿es un error común? Me refiero a la programación del mundo real y a los proyectos "reales" que existen.
Gracias