我有一个基类,其中包含一个可选的虚函数。
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++中的常见陷阱,还是我误解了虚函数?