2015-07-05 32 views
13

Ho visto la seguente sintassi in molti posti in cui vengono utilizzate le classi STL senza specificarle esplicitamente con std::. Qual è il vantaggio del namespace std {} iniziale? Perché non mettere semplicemente using namespace std;?"namespace std {}" prima di "using namespace std;"

namespace std {} 
using namespace std; 
+3

@Steephen: Cosa? Come? La domanda dell'OP non è affatto rivolta a quel "duplicato", per quanto posso dire. –

+0

@ BenjaminLindley Hai ragione, non ho letto chiaramente la domanda. Ho riaperto il mio voto di chiusura. – Steephen

risposta

10

namespace std {} semplicemente dichiara lo spazio dei nomi in modo che il compilatore sa su di esso e facendo using namespace std; non causerà un errore.

Più tardi il codice da std:: può essere #include d e possono essere automaticamente indicati senza il prefisso std::.

+4

Ciò significherebbe che gli include vengono dopo la direttiva using, che è una cosa molto brutta da fare - può cambiare il significato del codice in quelle intestazioni! –

Problemi correlati