El control de acceso en C++ ofrece un gran control al creador de la clase. Los usuarios de la clase pueden ver claramente lo que pueden usar y qué puede ignorar. Más importante aún es la posibilidad de asegurar que ningún programador cliente depende de ninguna parte de la implementación interna de la clase. Si sabe esto como creador de la clase, puede cambiar la implementación subyacente con la seguridad de que ningún programador cliente se verá afectado por los cambios, pues no pueden acceder a esa parte de la clase.
Cuando tenga la posibilidad de cambiar la implementación subyacente, no solo podrá mejorar su diseño más tarde, también tiene la libertad de cometer errores. No importa con qué cuidado planee su diseño, cometerá errores. Sabiendo que es relativamente seguro que cometerá esos errores, experimentará más, aprenderá más rápido, y acabará su proyecto antes.
La interfaz pública de una clase es lo que realmente ve el programador cliente, así que es la parte de la clase más importante durante el análisis y diseño. Pero incluso esto le deja algo de libertad para el cambio. Si no consigue la interfaz correcta a la primera, puede añadir más funciones, mientras no quite ninguna que el programador cliente ya haya usado en su código.