範例

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