5.6. Clases manejador

El control de acceso en C++ le permite separar la interfaz de la implementación, pero la ocultación de la implementación es sólo parcial. El compilador debe ver aún la declaración de todas las partes del objeto para poder crearlo y manipularlo correctamente. Podría imaginar un lenguaje de programación que requiriese sólo la interfaz pública del objeto y permitiese que la implementación privada permaneciese oculta, pero C++ realiza la comprobación de tipos estáticamente (en tiempo de compilación) tanto como es posible. Esto significa que se dará cuenta lo antes posible de si hay un error. También significa que su programa será más eficiente. De todas formas, la inclusión de la implementación privada tiene dos efectos: la implementación es visible aunque no se pueda acceder a ella fácilmente, y puede causar recompilaciones innecesarias.

5.6.1. Ocultar la implementación

Algunos proyectos no pueden permitirse tener visible su implementación al programador cliente. Puede dejar a la vista información estratégica en un fichero de cabecera de una librería que la compañía no quiere dejar disponible a los competidores. Puede estar trabajando en un sistema donde la seguridad sea clave (un algoritmo de encriptación, por ejemplo) y no quiere dejar ninguna pista en un fichero de cabecera que pueda ayudar a la gente a romper el código. O puede que su librería se encuentre en un ambiente «hostil», donde los programadores accederán directamente a los componentes privados de todas formas, usando punteros y moldes. En todas estas situaciones, es de gran valor tener la estructura real compilada dentro de un fichero de implementación en lugar de a la vista en un fichero de cabecera.