Por que é preferível ter interfaces não virtuais?

Eu estou passando por este artigohttp://www.gotw.ca/publications/mill18.htm por Herb Sutter. O autor menciona que a criação de interfaces não virtuais separa a especificação da interface dos "detalhes da implementação (ou seja, o comportamento internamente personalizável)"

// 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();
  // ...
};

Que tipo de detalhe de implementação (ou comportamento personalizável) o exemplo acima especifica? Estou um pouco confuso sobre o que há de errado com o código acima, que exige que tenhamos interfaces não virtuais

questionAnswers(2)

yourAnswerToTheQuestion