c++ - 在 C++ 中查找关闭的成员函数名称
问题描述
我刚刚遇到了一个错误(我自己制造的!),表现如下。我有一个带有虚拟成员函数的类,我需要通过为一些新用例添加一个额外的参数来扩展它。我用默认值添加了它,这样它就不会中断任何当前调用。我错过的是从这个类继承的另一个类,它覆盖了这个不再是覆盖的函数。虽然我知道在添加新代码时使用override关键字来避免这种情况,但我想知道是否有任何方法可以找到所有在词法上足够接近的函数,以便可能出现类似错误的情况。曾经这样做过,有可能我可能在过去的某个时候做过,并且想回顾一下代码库。
解决方案
Clang 有警告标志-Woverloaded-virtual
struct Base
{
virtual void foo(int = 42) {}
};
struct Derived : Base
{
virtual void foo() {} // Oups
};
您可能还对带有modernize-use-overrideoverride
的clang-tidy 感兴趣,以便将来在任何符合C++11 的编译器中添加和避免此错误。
推荐阅读
- javascript - Javascript - 运动模糊图像/画布
- python - 如何在 python 中解码这个 Ajax 响应?
- sql-server - 续集 azure sql 数据库回滚
- python - 通过 ezdxf 使用自定义字体
- c# - 在 VS 中调试时可以跳到循环的第 i 次迭代吗?
- stenciljs - 模板编译器是否忽略了某些文件?
- r - 更新到新的 R 版本后代码不起作用
- angular - Angular - 从父类调用子组件函数
- scala - 为什么 Semigroup 有 Option 类型并且表现得像 Monoid 中的中性元素?
- java - JOOQ + JPA 实体