Cita:
Iniciado por eferion Si tu declaras una función en la parte privada de una clase dicha función pasa a ser accesible únicamente por la propia clase... su ámbito de uso es tremendamente limitado. En este caso, el compilador no dará error... esperará a encontrar un uso de dicha función para mostrarte un mensaje de error. Este comportamiento se aprovechaba hasta la llegada de C++11 para deshabilitar, por ejemplo, el constructor por defecto (basta con declararlo en la parte privada y olvidarse de la implementación... mientras no intentes llamarlo desde la propia clase el código compilará).
Si, en cambio, declaras la función en la parte pública esa función pasa a ser accesible desde cualquier parte del código... como es hasta posible que la clase acabe compilada en una librería (me da igual que fuese estática o dinámica) entonces el compilador obliga a que la función tenga implementación. Imagínate que compilas una DLL y no te da problemas... luego distribuyes esa DLL y los clientes se empiezan a quejar diciendo que no se puede usar tu DLL porque les da problemas de compilación...
Si el asunto no ha quedad claro se admiten preguntas :P
Un saludo.
Hola eferion:
Perfectamente explicado y entendido.
Sin embargo, tras mi último "descubrimiento", cambio la pregunta a:
¿Entonces por qué me deja tener una función NO implementada en la parte pública?
(Como en el ejemplo que pongo)