Überlast der rein virtuelle Funktion

Normalerweise verwende ich Reine virtuelle Funktionen für die Methoden, die erforderlich sind, meinen code auch zu funktionieren. Daher erstelle ich interfaces und dann anderen Benutzern der Umsetzung Ihrer abgeleiteten Klassen. Die abgeleiteten Klassen haben nur diese virtuellen Funktionen als der öffentlichkeit, während einige zusätzliche Methoden implementiert werden sollten als privat, da mein code nicht nennen.
Ich weiß nicht, ob diese berücksichtigt werden können als good-practice-OOP (gibt es design-pattern?).
Trotzdem, meine Frage ist:
Kann ein Benutzer überlastung eine rein virtuelle Funktion?

d.h.

class Base
{
public:
 Base();
 virtual ~Base();
 virtual void foo(int,double)=0;
};

class Derived:
public Base
{
 private:
  //methods
 public:
 Derived();
 virtual ~Derived();
 virtual void foo(int, double, double); //this doesn't work
 };

Könnte eine Lösung sein:

 virtual void foo(int,double,double=0)=0;

in der Basisklasse, aber es ist sehr begrenzt. Was denkt Ihr darüber?

Funktion überladungen stellen eine andere API. Eine abstrakte Basis-Klasse stellt eine einheitliche API. Also Nein, das macht keinen Sinn.
Nicht deinem Beispiel fehlt class Derived : Base?
richtig, ich habe nur bearbeitet. Dank

InformationsquelleAutor Ale | 2013-04-05

Schreibe einen Kommentar