In tutti i nostri corsi C++, tutti gli insegnanti inseriscono sempre using namespace std;
subito dopo lo #include
s nei loro file .h
. Questo mi sembra pericoloso da allora, includendo quell'intestazione in un altro programma, otterrò lo spazio dei nomi importato nel mio programma, forse senza rendermene conto, intendendolo o volendolo (l'inclusione dell'intestazione può essere molto profondamente annidata)."using namespace" nelle intestazioni C++
Quindi la mia domanda è duplice: Ho ragione che using namespace
non deve essere utilizzato nei file di intestazione, e/o c'è qualche modo per annullarla, qualcosa come:
//header.h
using namespace std {
.
.
.
}
Ancora una domanda lungo la stessa linee: Se un file di intestazione #include
ha tutte le intestazioni a cui corrisponde il file .cpp
corrispondente, solo quelle necessarie per le definizioni dell'intestazione e lascia il file .cpp
#include
o nessuna e dichiara tutto ciò di cui ha bisogno come extern
?
Il ragionamento alla base della domanda è lo stesso di sopra: non voglio sorprese quando includo i file .h
.
Inoltre, se ho ragione, si tratta di un errore comune? Intendo nella programmazione del mondo reale e in progetti "reali" là fuori.
Grazie.
http://stackoverflow.com/questions/1265039/using-std-namespace –
come nota a margine, se si ottengono collisioni di nomi dovute alle istruzioni 'using namespace', è possibile utilizzare il nome completo per risolvere il problema. –