¿Por qué C ++ necesita un archivo de encabezado separado?

Nunca entendí realmente por qué C ++ necesita un archivo de encabezado separado con las mismas funciones que en el archivo .cpp. Hace que crear clases y refactorizarlas sea muy difícil, y agrega archivos innecesarios al proyecto. Y luego está el problema de tener que incluir archivos de encabezado, pero tener que verificar explícitamente si ya se ha incluido.

C ++ fue ratificado en 1998, entonces, ¿por qué está diseñado de esta manera? ¿Qué ventajas tiene tener un archivo de encabezado separado?

Siguiente pregunta:

¿Cómo encuentra el compilador el archivo .cpp con el código, cuando todo lo que incluyo es el archivo .h? ¿Asume que el archivo .cpp tiene el mismo nombre que el archivo .h, o en realidad mira a través de todos los archivos en el árbol de directorios?

Respuestas a la pregunta(13)

Su respuesta a la pregunta