在我们的项目中,情况(但确实发生)是,在一个衍生类别中,基级的非虚拟方法被同一原型的方法所掩盖。 在此情况下,汇编者(就我们的情况而言为++4.4)保持平静。 虽然我可以看到,对私人方法而言,任何警告都不会有用,但对于受保护或公用方法而言,这至少应该是一种可预示的警告。
如果存在这种情况,我无法找到。
在这里,我要举一个小小小的例子来抱怨(可以保证,这种手法永远不会像在一枪中写的,通常在某个时候工作是A的虚拟方法,后来发生不可复制的变化):
class A
{
public:
void work(int p)
{ /* do something */ }
};
class B : public A
{
public:
void work(int p)
{ /* do something different */ }
};
Result: no warning even with -Wall -Wextra.