オプションの仮想関数を持つ基本クラスがあります
class Base {
virtual void OnlyImplementThisSometimes(int x) {}
};
これをコンパイルすると、未使用のパラメーター x に関する警告が表示されます。仮想機能を実装する必要がある他の方法はありますか? 私は次のように書き直しました。
class Base {
virtual void OnlyImplementThisSometimes(int x)
{
x = 0;
}
};
注意しないと、作成したサブクラスが間違った関数を実装する可能性があり、オーバーロードのために気付かないという問題もあります。
class Derived : public Base {
void OnlyImplementThisSometimes(int x, int y) { // some code }
};
Derived d;
Base *b = dynamic_cast<Base *>(&d);
b->OnlyImplementThisSometimes(x); // calls the method in the base class
「int y」パラメーターを使用して派生関数を実装したため、基本クラスのメソッドが呼び出されましたが、これに関する警告はありません。これらは C++ でよくある落とし穴ですか、それとも仮想関数を誤解していますか?