Forzar a todas las clases a implementar / anular un método 'virtual puro' en la jerarquía de herencia de varios niveles
En C ++ por qué lapur virtual
l método @ exige su anulación obligatoriasolament a sus hijos inmediatos (para la creación de objetos), pero no a los nietos, etc.
struct B {
virtual void foo () = 0;
};
struct D : B {
virtual void foo () { ... };
};
struct DD : D {
// ok! ... if 'B::foo' is not overridden; it will use 'D::foo' implicitly
};
No veo gran problema en dejar esta característica fuera.
Por ejemplo, desde el punto de vista del diseño del lenguaje, podría haber sido posible que,struct DD
tiene permitido usarD::foo
solo si tiene alguna declaración explícita comousing D::foo;
. De lo contrario, tiene que anularfoo
obligatorio.
Existe alguna forma práctica de tener este efecto en C ++?