Es crítico que sea capaz de ocultar la implementación subyacente de una clase porque puede querer cambiarla después. Hará estos cambios por eficiencia, o porque haya alcanzado una mejor comprensión del problema, o porque hay alguna clase nueva disponible para usar en la implementación. Cualquier cosa que haga peligrar la privacidad de la implementación subyacente reduce la flexibilidad del lenguaje. Por eso, la función inline es muy importante porque prácticamente elimina la necesidad de macros de preprocesador y sus problemas asociados. Con inline, los métodos pueden ser tan eficientes como las macros.
Por supuesto se puede abusan de las funciones inline en las definiciones de clase. El programador está tentado de hacerlo porque es fácil, así que lo hace. Sin embargo, no es un problema grave porque después, cuando se busquen reducciones de tamaño, siempre puede cambiar las inline a funciones convencionales dado que no afecta a su funcionalidad. La pauta debería ser «Primero haz el trabajo, después optimiza».