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 virtuall 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 ++?

Respuestas a la pregunta(10)

Su respuesta a la pregunta