Przeciążenie czystej funkcji wirtualnej

Zwykle używam czystych funkcji wirtualnych dla tych metod, które są wymagane przez mój kod do poprawnego działania. Dlatego tworzę interfejsy, a następnie inni użytkownicy implementują swoje klasy pochodne. Pochodne klasy mają tylko te funkcje wirtualne jako publiczne, podczas gdy niektóre dodatkowe metody powinny być zaimplementowane jako prywatne, ponieważ mój kod nie wywołuje ich. Nie wiem, czy można to uznać za dobrą praktykę OOP (czy istnieje jakiś wzór?). W każdym razie moje pytanie brzmi: czy użytkownik może przeciążać czystą funkcję wirtualną?

to znaczy

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
 };

Rozwiązaniem może być:

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

w klasie bazowej, ale jest bardzo ograniczony. Co myślisz o?

questionAnswers(6)

yourAnswerToTheQuestion