是否有 lint 工具可以检查子类虚拟函数是否与父类定义匹配?
Is there a lint tool that checks a child class virtual function matches the parent class definition?
我刚刚在一个非平凡的代码库中更改了一堆虚拟方法,以支持64位可移植性。我已经在代码库中进行了大量搜索,以查找需要编辑以更改虚函数参数类型的派生类。不幸的是,编译器(VS2013(没有警告我该函数的派生类版本具有错误的类型并且不会被调用。我一直在寻找我错过的实例。除了非常彻底之外,我想在它上面运行一个工具,为我完成所有检查。
有这样的工具吗?
有一个更简单的解决方案:使用override
说明符。如果将override
添加到子类虚函数的末尾,则在更改基类虚函数的参数时,将出现编译器错误,除非也更改子类虚函数。
您还可以使用final
说明符来指示虚拟函数不能由子类实现。
启用警告 C4263,由于某种奇怪的原因,即使在/W4 处也默认禁用警告 C4263。
'function' : 成员函数不覆盖任何基类虚拟成员函数
类函数定义与基类中的虚函数同名,但参数的数量或类型不同。这有效地隐藏了基类中的虚函数。
默认情况下,此警告处于关闭状态。有关详细信息,请参阅默认情况下关闭的编译器警告。
作为记录,等效的 gcc/clang 标志是-Woverloaded-virtual
。
相关文章:
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 对静态分配的子类对象进行静态分配的纯虚拟父类引用是否合法?
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 是否有 lint 工具可以检查子类虚拟函数是否与父类定义匹配?
- 如果不手动完成,子类是否继承父类的析构函数?
- 在 PHP 中不使用父类时是否称为多态性
- 是否可以替换父类?
- 是否可以在父类中引用子类
- C++模板是否能够从父类"forward any class function"?
- 当调用子类的析构函数时,是否也会调用父类的析构函数
- 当父类是抽象的时,是否可以使用父类
- 父类具有Virtual函数.是否需要在父类中具有虚拟析构函数
- 使用继承时,是否必须"#include"子类父类的头文件。 C++
- 我能判断投射到父类中的对象类型最初是否是C++中的子类吗
- 如果我希望子类向父类添加功能,我是否应该保护我的属性
- 派生类是否可以访问作为内部类的好友的父类的受保护内部类的私有方法
- 视觉 是否可以覆盖子类中的函数C++而无需对抽象的父类中的函数使用 virtual 关键字
- 父类是否可以访问C++中派生类的对象
- 子类是否共享C++父类的静态变量
- 在C++中,如何测试对象是否是父类构造函数中子类的实例?