Qual è il punto di una funzione privata pura virtuale?

Ho trovato il seguente codice in un file di intestazione:

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

Per me, questo implica che la class Engine o una class derivata da esso, deve fornire l’implementazione per quelle pure funzioni virtuali. Ma non pensavo che le classi derivate avrebbero potuto accedere a quelle funzioni private per reimplementarle – quindi perché renderle virtuali?