Перегрузка чисто виртуальной функции
Я обычно использую чисто виртуальные функции для тех методов, которые требуются моему коду для нормальной работы. Поэтому я создаю интерфейсы, а затем другие пользователи реализуют свои производные классы. Производные классы имеют только эти виртуальные функции как публичные, в то время как некоторые дополнительные методы должны быть реализованы как закрытые, так как мой код их не вызывает. Я не знаю, можно ли это считать хорошей практикой ООП (есть ли шаблон проектирования?). В любом случае, мой вопрос: может ли пользователь перегружать чисто виртуальную функцию?
то есть
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
};
Решение может быть:
virtual void foo(int,double,double=0)=0;
в базовом классе, но это очень ограничено. О чем вы думаете?