#include <iosfwd>De esta forma podemos utilizar los tipos ostream, istream, etc. sin necesidad de traer la definición de todas las clases de entrada y salida. Generalmente deberíamos utilizar el <iosfwd> en nuestro .h cuando no hagamos un mayor uso que sólo referenciarlas. Un ejemplo:
#ifndef EMPLEADO_IO_HRegla: Siempre intenta usar las forward declarations antes que incluir los archivos de cabecera que definen las clases, los cuales suelen mostrar detalles de implementación que son propensos a cambiar. Siguiendo esta regla mejoraremos el tiempo de compilación y la cantidad de archivos a compilar al realizar una modificación en un .h.
#define EMPLEADO_IO_H
#include <iosfwd> // forward declaration de ostream
class Empleado; // forward declaration de nuestro tipo
// Aquí no necesitamos conocer el tamaño ni de Empleado,
// ni de ostream, podemos compilar sólo con sus forward
// declarations.
void write_empleado_en_formato_binario(const Empleado&, ostream&);
#endif
Para más información, ver la sección 27.3 Forward declarations [iostream.forward] del último borrador público del estándar de C++