Che differenza c’è tra ‘#include’ e ‘using namespace std’ in C++?

  • Direttiva #include

La direttiva #include dice al preprocessore di inserire il contenuto di un altro file nel codice sorgente nel punto in cui si trova la direttiva #include.

Le direttive #include sono tipicamente usate per includere i file header C++ / C per funzioni che si trovano al di fuori del file sorgente corrente.

  • iostream

Un header che definisce gli oggetti standard input/output stream. Principalmente usato per cin e cout.

  • namespace

Supponiamo che tu abbia una funzione chiamata max() e che ci sia un'altra libreria disponibile che ha anche qualche funzione max(). Ora il compilatore non ha modo di sapere a quale funzione max() vi state riferendo all'interno del vostro codice.

Un namespace è definito per superare questa difficoltà ed è usato come informazione aggiuntiva per differenziare funzioni simili, classi, variabili ecc. In sostanza, uno spazio dei nomi definisce un ambito.

  • std

Nello spazio dei nomi std vengono dichiarate funzioni della libreria standard C++, come stringhe o vettori.

Se non scrivete usando lo spazio dei nomi std; e il compilatore vede la stringa o il vettore non saprà a cosa vi state riferendo. Dovrete dirgli esplicitamente std::string o std::vector, e se non lo fate, otterrete un errore di compilazione.