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