title: Overload of pure virtual function
body: <p>I usually use pure virtual functions for those methods that are required by my code to work well. Therefore, I create interfaces and then other users implement their derived classes. The derived classes have only these virtual functions as public while some additional methods should be implemented as private since my code does not call them.
  I don't know if this can be considered as a good practice of OOP (are there any design pattern?).
  Anyway, my question is:
  Can a user overload a pure virtual function?</p>
  
  <p>i.e.</p>
  
  <pre><code>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
   };
  </code></pre>
  
  <p>A solution could be:</p>
  
  <pre><code> virtual void foo(int,double,double=0)=0;
  </code></pre>
  
  <p>in the base class but it is very limited. What do you think about? </p>