サンプル

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

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


ソリューション
基本クラス内で新規デフォルト値を再定義しないでください。 非仮想関数をオーバーライドしてはならないため、非仮想インターフェースを作成することは、デフォルトのパラメーターを変更すべきではないことを示しています。

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