¿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.