Soy un poco nuevo en el desarrollo de software a gran escala en C ++, y me preguntaba sobre el lado del diseño de las cosas.
Estaba leyendo esta pregunta y pensé que, en general, una vez que superamos las definiciones constantes y otros asuntos triviales, los archivos de encabezado de C ++ son solo definiciones de API :
Definen lo que otros programadores (o usted mismo de otros módulos) podrán usar (clases, funciones públicas), pero no se debe definir ninguna clase o función privada. Es como si el archivo de encabezado define las abstracciones (interfaces ...) y el archivo de origen lo implementa. Una vez que se compila el archivo fuente, los detalles de implementación se ocultan y siguen siendo los encabezados disponibles públicamente que definen lo que puede hacer el módulo.
Sentí que esta vista de la separación del archivo de cabecera / fuente era mucho más fácil de entender y seguir que las explicaciones habituales, ya que puedes pensar que "sería XXX
material de API disponible públicamente, o es un detalle para hacer salchichas que se esconde en un archivo fuente no revelado? "
¿Es mi modelo mental de archivos de encabezado más o menos correcto? Qué me perdí ?