Il y a deux aspects à cela. L'un est de comprendre que le compilateur C++ a besoin de références aux fonctions et aux classes que vous utilisez en dehors de votre module actuel. L'autre est de comprendre comment fonctionne le préprocesseur.
Ce à quoi vous faites référence est ce qu'on appelle un fichier d'en-tête. Il contient des références à une bibliothèque qui contient des classes et des fonctions, et peut définir certains symboles et/ou macros du préprocesseur. Iostreams a des références aux classes et fonctions d'entrée/sortie qui correspondent à une bibliothèque contenant les définitions de ces classes et fonctions, mais vous n'avez pas nécessairement besoin de vous soucier du nom de cette bibliothèque. Dans ce cas, le compilateur devrait indiquer au linker de ramasser cela automatiquement.
Les autres réponses ont raison de dire que dans les versions modernes de C++, cela est référencé comme , et non . Ce dernier est l'ancienne forme de référence, bien que cela puisse être nécessaire avec le compilateur que vous utilisez.
#include est une directive du préprocesseur qui lui indique de coller le contenu du fichier d'en-tête dans le flux de code C++ qui est fourni au compilateur.
Le préprocesseur obtient la première passe de votre code. Même si vous avez demandé au compilateur de traduire votre programme en code objet, le préprocesseur l'obtient en premier. Ce n'est qu'après que le préprocesseur a scanné, et éventuellement patché, et substitué des symboles dans votre code que le compilateur peut enfin voir le code.
Dans votre cas, le préprocesseur patche le contenu du fichier d'en-tête iostream dans votre module C++, effectivement en mémoire - il n'altère pas votre fichier source original - puis transmet ce contenu composite au compilateur. Le compilateur récupère les références, ainsi que vos appels aux classes/fonctions d'E/S (dans ce cas), et les traduit en références de code objet. L'éditeur de liens consulte ensuite certaines bibliothèques standard, trouve quelques endroits où lier le code de la bibliothèque aux références, produisant ainsi des liens directs entre vos appels et les fonctions nécessaires, et produit l'exécutable final.