Avatar ·

¿Por qué se necesitan archivos de encabezado (.h) y archivos de implementación (.cpp) en C++?

¡Hola a todos! Acabo de empezar a aprender C++ y no puedo entender por qué existe esta separación entre archivos header y archivos .cpp. En Java o Python simplemente escribía todo el código en un solo archivo y funcionaba. Aquí hay un lío con #include, #pragma once y otras directivas. Por ejemplo, escribo un programa simple: ```cpp // main.cpp #include void sayHello() { std::cout << "Hello!" << std::endl; } int main() { sayHello(); return 0; } ``` Y esto funciona. ¿Por qué necesito crear un sayHello.h y sayHello.cpp separados? Podría escribir todo en un solo archivo. He oído que es necesario para la organización del código y para evitar errores de linking, pero no entiendo cómo exactamente. Me asusta especialmente cuando veo que en el archivo .h se escriben declaraciones de funciones (prototipos) y en el .cpp la implementación. Y si olvido agregar algo, el compilador da un error. ¿Por qué no se puede almacenar todo en un solo lugar? Explíquenme, por favor, con ejemplos, por qué existe esta separación y cómo usarla correctamente.