C ++ fa la risoluzione per nome, non per firma. Ciò significa che se due funzioni / variabili / variabili membro nello stesso ambito hanno lo stesso nome, possono entrare in conflitto. Quando fai qualcosa come using namespace std;
, stai includendo lo spazio dei nomi intero std
nel tuo codice.
Che cosa succederebbe se nel tuo codice fosse presente una funzione basata su modelli chiamata count
che richiedeva 3 parametri come std::count
? Si otterrebbe un conflitto perché (dopo il nome di manomissione) entrambe le funzioni avrebbero lo stesso nome nello stesso ambito. È meglio includere solo le parti dello spazio dei nomi std
che si desidera utilizzare, in modo da non introdurre potenziali errori nel codice quando si torna indietro per aggiornarlo.
Quindi, includere solo istruzioni come using std::cout;
o using std::ostream;
includerà solo quelle funzioni / tipi / typedefs / & c. nel tuo codice.