Überlastung der reinen virtuellen Funktion
Normalerweise verwende ich rein virtuelle Funktionen für die Methoden, die von meinem Code benötigt werden, um gut zu funktionieren. Daher erstelle ich Schnittstellen und implementiere dann andere Benutzer ihre abgeleiteten Klassen. Die abgeleiteten Klassen haben nur diese virtuellen Funktionen als öffentlich, während einige zusätzliche Methoden als privat implementiert werden sollten, da mein Code sie nicht aufruft. Ich weiß nicht, ob dies als eine gute Praxis von OOP angesehen werden kann (gibt es ein Entwurfsmuster?). Wie auch immer, meine Frage ist: Kann ein Benutzer eine rein virtuelle Funktion überlasten?
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
};
Eine Lösung könnte sein:
virtual void foo(int,double,double=0)=0;
in der Basisklasse ist es aber sehr begrenzt. Was denkst du über?