在我们的项目中,它很少发生(很少会发生)在派生类中,来自基类的非虚方法被具有相同原型的方法隐藏。在这种情况下,编译器(在我们的例子中是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也没有警告。
答案 0 :(得分:1)