У меня есть базовый класс с дополнительной виртуальной функцией
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», но об этом нет предупреждения. Это просто распространенные ловушки в С++ или я неправильно понял виртуальные функции?