Beispiel

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

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


Lösung
Definieren Sie einen neuen Standardwert in der Basisklasse nicht erneut. Da nicht virtuelle Funktionen nicht überschrieben werden sollten, gibt die Erstellung einer nicht virtuellen Schnittstelle an, dass der Standardparameter nicht geändert werden sollte.

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