title: What is the point of a private pure virtual function?
body: <p>I came across the following code in a header file:</p>
  
  <pre><code>class Engine
  {
  public:
      void SetState( int var, bool val );
      {   SetStateBool( int var, bool val ); }
  
      void SetState( int var, int val );
      {   SetStateInt( int var, int val ); }
  private:
      virtual void SetStateBool(int var, bool val ) = 0;    
      virtual void SetStateInt(int var, int val ) = 0;    
  };
  </code></pre>
  
  <p>To me, this implies that either the <code>Engine</code> class or a class derived from it, has to provide the implementation for those pure virtual functions. But I didn't think derived classes could have access to those private functions in order to reimplement them - so why make them virtual?</p>