是否有 lint 工具可以检查子类虚拟函数是否与父类定义匹配?

Is there a lint tool that checks a child class virtual function matches the parent class definition?

本文关键字:是否 父类 定义 函数 子类 lint 工具 检查 虚拟      更新时间:2023-10-16

我刚刚在一个非平凡的代码库中更改了一堆虚拟方法,以支持64位可移植性。我已经在代码库中进行了大量搜索,以查找需要编辑以更改虚函数参数类型的派生类。不幸的是,编译器(VS2013(没有警告我该函数的派生类版本具有错误的类型并且不会被调用。我一直在寻找我错过的实例。除了非常彻底之外,我想在它上面运行一个工具,为我完成所有检查。

有这样的工具吗?

有一个更简单的解决方案:使用override说明符。如果将override添加到子类虚函数的末尾,则在更改基类虚函数的参数时,将出现编译器错误,除非也更改子类虚函数。

您还可以使用final说明符来指示虚拟函数不能由子类实现。

启用警告 C4263,由于某种奇怪的原因,即使在/W4 处也默认禁用警告 C4263。

'function' : 成员函数不覆盖任何基类虚拟成员函数

类函数定义与基类中的虚函数同名,但参数的数量或类型不同。这有效地隐藏了基类中的虚函数。

默认情况下,此警告处于关闭状态。有关详细信息,请参阅默认情况下关闭的编译器警告。

作为记录,等效的 gcc/clang 标志是-Woverloaded-virtual