我有一个带有可选虚函数的基类
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++ 中的常见缺陷还是我误解了虚函数?