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

finding close member function names in C++

本文关键字:成员 函数 C++ 查找      更新时间:2023-10-16

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

Clang 有警告标志-Woverloaded-virtual

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

演示

您可能还对使用现代化-使用-覆盖的 clang-tidy 感兴趣,以添加override并避免将来在任何符合 C++11 的编译器中出现此错误。