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

标签 c++ virtual

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

最佳答案

Clang 有警告标志 -Woverloaded-virtual

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

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

Demo

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

关于c++ - 在 C++ 中查找紧密成员函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54347323/

相关文章:

没有常量表达式的 C++ 数组大小

c++ - 什么类型的转换适合从 unsigned char* 转换为 char*?

c++ - 我可以使用类模板返回类型的函数吗?

C++虚拟运算符删除?

C++重载虚拟+运算符

c++ - 在派生类的基类构造函数中使用重写函数

c++ - 一些简单的构造函数代码的解释

c++ - 未定义/未指定/实现定义的行为警告?

C++:g++ 编译器:stdio 与虚函数的冲突?

c++ - 具有多态性的派生类中的重载函数 (C++)