Duplicar posibles:
Private virtual method in C++C++: funciones virtuales privadas, frente a las funciones virtuales puras
Si he entendido bien a partir de este post (Private virtual method in C++), haciendo una función virtual en una clase base hace que las clases derivadas puedan anularlo. Pero parece que las cosas se detienen allí.
Pero si la función virtual de la clase base es pura, obliga a las clases derivadas a implementar la función. Por lo tanto, una función virtual pura (pública) es meramente una interfaz. Puedo ver un beneficio aquí.
Por otro lado, al hacer privada una función de clase base virtual, solo le da a la clase derivada la capacidad de anular la función, pero no veo ningún beneficio de esto. Es como si esa función virtual privada ni siquiera estuviera allí. Obviamente, la clase derivada no sabe acerca de la existencia de esa función virtual en la clase base porque es privada, entonces ¿hay algún beneficio de declarar una función privada de clase base virtual, en términos de herencia o polimorfismo?
Además, ¿hay alguna situación en la que una clase base declare una función 'pura virtual' y 'privada'?
Gracias.
¿Por qué declararlo protegido si sabes que nunca necesitarás acceder al método base desde las clases derivadas? Puede anular algo sin necesidad de poder llamarlo. –
http://www.parashift.com/c++-faq-lite/private-virtuals.html – Samson
No hay razón por la que * deba * declararse 'protegido'. Si necesita 'protected', úselo. Si no, entonces usa 'private'. – juanchopanza