Escribir más refactorización amigable C ++
En C ++ no tiene que usar encabezados en absoluto. Puede definir todo el objeto en un archivo tal como lo haría con C # o Java. Los desarrolladores de C generalmente solo mantendrán llamadas externas en un archivo de encabezado. Todas las llamadas internas se definirían en el archivo .c. Del mismo modo, puede reservar sus archivos C ++ .h para las clases / interfaces (clases abstractas virtuales puras) / etc. que están destinados a ser compartidos fuera de la DLL. Para clases / estructuras / interfaces internas, etc., simplemente incluiría el archivo .cpp que necesita:
#include<myclass.cpp>
Este no parece ser el enfoque más popular, pero es legal C ++. Definitivamente sería una posibilidad para todo su código interno. Esto permite que el código interno y el conjunto de clases cambien mucho más radicalmente al tiempo que proporciona una interfaz más estable para que el código fuera de su biblioteca / ejecutable interactúe.
Tener toda tu clase dentro de un archivo hará que sea más fácil hacer lo que quieras. No resolverá el problema de renombrar un método y tener que buscar en cada lugar donde se llame ese método, pero se asegurará de que tenga más mensajes de error inteligibles. Nada peor que hacer que su encabezado declare un método de una manera, pero lo implementa de manera diferente. Otro código que llama al archivo de encabezado se compilará correctamente y obtendrá una excepción de enlace, mientras que el archivo de implementación será el que se queje de que el método no se definió. Cuando defina cada método en su lugar (en la declaración de clase real), obtendrá el mismo mensaje de error sin importar qué archivo lo incluya.
También puede consultar esta pregunta: buenas herramientas de refactorización para C ++
Cómo C / C ++ resuelve los archivos de encabezado / implementación
En el nivel base C (y C ++ se basa en esa base), los archivos de encabezado declaran la promesa de una función / estructura / variable que es suficiente para permitir que un compilador cree el archivo objeto. De manera similar, los archivos de encabezado de C ++ declaran la promesa de funciones, estructuras, clases, etc. Es esta definición la que utiliza el compilador para reservar espacio en la pila, etc.
Los archivos .c o .cpp tienen la implementación. A medida que el compilador convierte cada archivo de implementación en un archivo de objeto, hay ganchos para los conceptos no implementados (lo que se declaró en el encabezado). El vinculador vincula los ganchos a las implementaciones en otros archivos de objetos y crea un binario más grande que incluye todo el código (biblioteca compartida o ejecutable).
VS específico
En cuanto a trabajar con aquellos en Visual Studio, hay algunos asistentes que ayudan a facilitar un poco las cosas. El nuevo asistente de clase creará su par coincidente de encabezado y archivos de implementación. Incluso hay una función de navegador de clase que le permitirá declarar nuevos métodos. Inyectará la definición en el encabezado y el código auxiliar de implementación en el archivo .cpp. Visual Studio ha tenido esas características durante más de una década (siempre que las haya usado).