Cosa significa #include in C++?

Ci sono due aspetti per questo. Uno è capire che il compilatore C++ ha bisogno di riferimenti a funzioni e classi che stai usando al di fuori del tuo modulo corrente. L'altro è capire come funziona il preprocessore.

Quello a cui ti riferisci è quello che si chiama un file di intestazione. Contiene riferimenti a una libreria che contiene classi e funzioni, e può definire alcuni simboli e/o macro del preprocessore. Iostreams ha riferimenti a classi e funzioni di input/output che corrispondono a qualche libreria che contiene definizioni per queste classi e funzioni, anche se non devi necessariamente preoccuparti di come si chiama la libreria. In questo caso, il compilatore dovrebbe indirizzare il linker a prenderla automaticamente.

Le altre risposte sono corrette che nelle versioni moderne di C++ questo è referenziato come , non . Quest'ultima è la vecchia forma di riferimento, anche se potrebbe essere necessaria con il compilatore che stai usando.

#include è una direttiva del preprocessore che gli dice di incollare il contenuto del file di intestazione nel flusso di codice C++ che viene inviato al compilatore.

Il preprocessore ottiene il primo passaggio al tuo codice. Anche se avete chiamato il compilatore per tradurre il vostro programma in codice oggetto, il preprocessore lo riceve per primo. Solo dopo che il preprocessore ha scansionato, e possibilmente inserito, e sostituito i simboli nel vostro codice, il compilatore arriva finalmente a vedere il codice.

Nel vostro caso, il preprocessore inserisce il contenuto del file di intestazione iostream nel vostro modulo C++, effettivamente in memoria - non altera il vostro file sorgente originale - e poi fornisce quel contenuto composto al compilatore. Il compilatore prende i riferimenti, e le vostre chiamate a (in questo caso) classi/funzioni I/O, e le traduce in riferimenti al codice oggetto. Il linker quindi guarda attraverso alcune librerie standard, trova alcuni posti per collegare il codice della libreria ai riferimenti, producendo così collegamenti diretti tra le vostre chiamate e le funzioni necessarie, e produce l'eseguibile finale.