В наших проектах бывает (редко, но бывает), что в производном классе не виртуальный метод из базового класса скрыт методом с тем же прототипом.В этом случае компилятор (в нашем случае g ++ 4.4) хранит молчание.Хотя я вижу, что никакое предупреждение не может быть полезным для частных методов, для защищенных или открытых методов это должно быть как минимум настраиваемое предупреждение.
Если такое существует, я не могу его найти.
Вот небольшой пример, на который я бы хотел, чтобы g ++ пожаловался (будьте уверены, что этот вид кода-паттерна никогда не пишется таким образом за один раз, обычно в какой-то момент работа была виртуальным методом в A и быланеобъяснимо изменилось позже):
class A
{
public:
void work(int p)
{ /* do something */ }
};
class B : public A
{
public:
void work(int p)
{ /* do something different */ }
};
Результат: без предупреждения даже с -Wall -Wextra.