Warum werden nicht virtuelle Schnittstellen bevorzugt?

Ich gehe diesen Artikel durchhttp: //www.gotw.ca/publications/mill18.ht von Herb Sutter. Der Autor erwähnt, dass das Schreiben von nicht virtuellen Schnittstellen die Schnittstellenspezifikation von den "Implementierungsdetails (nämlich dem intern anpassbaren Verhalten)" trennt.

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

Was für Implementierungsdetails (oder ein anpassbares Verhalten) gibt das obige Beispiel an? Ich bin ein wenig verwirrt darüber, was mit dem obigen Code nicht stimmt, was erfordert, dass wir nicht-virtuelle Schnittstellen habe

Antworten auf die Frage(4)

Ihre Antwort auf die Frage