¿Por qué se prefiere tener interfaces no virtuales?

Estoy leyendo este articulohttp://www.gotw.ca/publications/mill18.htm por Herb Sutter. El autor menciona que escribir interfaces no virtuales separa la especificación de la interfaz de los "detalles de implementación (es decir, el comportamiento personalizable internamente)"

// Example 1: A traditional base class.
//
class Widget
{
public:
  // Each of these functions might optionally be
  // pure virtual, and if so might or might not have
  // an implementation in Widget; see Item 27 in [1].
  //
  virtual int Process( Gadget& );
  virtual bool IsDone();
  // ...
};

¿Qué tipo de detalle de implementación (o comportamiento personalizable) especifica el ejemplo anterior? Estoy un poco confundido acerca de lo que está mal con el código anterior, que requiere que tengamos interfaces no virtuales

Respuestas a la pregunta(2)

Su respuesta a la pregunta