¿Qué significa #include en C++?

Hay dos aspectos en esto. Uno es entender que el compilador de C++ necesita referencias a las funciones y clases que estás usando fuera de tu módulo actual. El otro es entender cómo funciona el preprocesador.

Lo que te refieres es lo que se llama un archivo de cabecera. Contiene referencias a una biblioteca que contiene clases y funciones, y puede definir algunos símbolos y/o macros del preprocesador. Iostreams tiene referencias a clases y funciones de entrada/salida que corresponden a alguna biblioteca que contiene definiciones para estas clases y funciones, aunque no necesariamente tienes que preocuparte de cómo se llama la biblioteca. En este caso, el compilador debería indicar al enlazador que lo recoja automáticamente.

Las otras respuestas son correctas en cuanto a que en las versiones modernas de C++ esto se referencia como , no . Esta última es la forma antigua de referencia, aunque puede ser necesaria con el compilador que está utilizando.

#include es una directiva del preprocesador que le dice que pegue el contenido del archivo de cabecera en el flujo de código C++ que se alimenta al compilador.

El preprocesador recibe la primera pasada de su código. Aunque usted haya pedido al compilador que traduzca su programa a código objeto, el preprocesador lo recibe primero. Sólo después de que el preprocesador haya escaneado, y posiblemente parcheado, y sustituido símbolos en su código, el compilador finalmente llega a ver el código.

En su caso, el preprocesador parchea el contenido del archivo de cabecera iostream en su módulo C++, efectivamente en la memoria-no altera su archivo fuente original-y luego alimenta ese contenido compuesto al compilador. El compilador recoge las referencias, y tus llamadas a (en este caso) clases/funciones de E/S, y las traduce a referencias de código objeto. El enlazador entonces busca en algunas bibliotecas estándar, encuentra algunos lugares para enlazar el código de la biblioteca a las referencias, produciendo así enlaces directos entre sus llamadas y las funciones necesarias, y produce el ejecutable final.