Exemple

class Base {
public:
virtual void fnc(int param = 0);
};

class Derived: public Base {
public:
void fnc(int param = 1){}
};


Solution
Ne définissez pas de nouvelle valeur par défaut dans la classe de base. Les fonctions non virtuelles ne devant pas être remplacées, la création d'une interface non virtuelle indique que le paramètre par défaut ne doit pas être modifié.

class Base {
public:
void fnc(int param = 0){
fncWork(param);
}

private:
virtual void fncWork(int param);
};

class Derived: public Base {
private:
virtual void fncWork(int param){}
};