在 C++ 中查找紧密成员函数名称

finding close member function names in C++

我刚刚遇到了一个错误(我自己造成的!),表现如下。我有一个 class 和一个虚拟成员函数,我需要通过为一些新用例添加一个额外的参数来扩展它。我用默认值添加了它,这样它就不会中断任何当前调用。我错过的是,还有另一个 class 继承自此 class,它覆盖了此函数,但不再是覆盖。虽然我知道 override 关键字可以在添加新代码时避免这种情况,但我想知道是否有任何方法可以找到词法上足够接近的所有函数,从而可能出现类似错误。曾经做过一次,有可能我在过去的某个时候做过,想回顾一下代码库。

Clang 有警告标志 -Woverloaded-virtual

struct Base
{
    virtual void foo(int = 42) {}
};

struct Derived : Base
{
    virtual void foo() {} // Oups
};

Demo

您可能还对 modernize-use-override 的 clang-tidy 感兴趣,以添加 override 并避免将来在任何 C++11 兼容编译器中出现此错误。