Digamos que tenemos un concreto class Apple
. (Se pueden crear instancias de los objetos de Apple.) Ahora, alguien viene y obtiene un resumen class Peach
de Apple. Es abstracto porque introduce una nueva función virtual pura. El usuario de Peach ahora se ve obligado a derivar y definir esta nueva función. ¿Es este un patrón común? ¿Es correcto hacer esto?Derivando una clase abstracta de la clase concreta
muestra:
Ahora digamos que tenemos un concretoclass Apple { public: virtual void MakePie(); // more stuff here };
class Peach : public Apple { public: virtual void MakeDeliciousDesserts() = 0; // more stuff here };
class Berry
. Alguien deriva un resumen
class Tomato
de Berry. Es abstracto porque sobrescribe una de las funciones virtuales de Berry y lo convierte en puramente virtual. El usuario de Tomato tiene que volver a implementar la función previamente definida en Berry. ¿Es este un patrón común? ¿Es correcto hacer esto?
Ejemplo:
Nota: Los nombres son artificiales y no reflejan ningún código real (con suerte). Ningún fruto ha sido dañado en la redacción de esta pregunta.class Berry { public: virtual void EatYummyPie(); // more stuff here };
class Tomato : public Berry { public: virtual void EatYummyPie() = 0; // more stuff here };
¿Se puede editar su pregunta para mostrar algunas muestras de código, por favor? – quamrana
@Marcin: "No se han dañado frutas en la redacción de esta pregunta" Eso hizo que mi día :) –
Se agregaron fragmentos de código a petición. – Marcin