如何检查是否正在编写新方法或覆盖现有方法
How do you check if you are writing a new method or override existing one?
我的意思是,如果我在扩展其他类A(不是我创建的)的类B中,你怎么知道你正在编写的方法:
void SetStatus() { }
它还没有声明,而你只是覆盖它?右键单击->每次都转到定义?(例如VS2015)。
如果你有代码-你可以在基类中声明方法final
,那么如果你试图重写一个虚拟方法,代码就不会编译。
如果你想覆盖它,你可以尝试调用A::SetStatus();在B::SetStatus()的定义中。
如果您的IDE显示错误并且没有编译,则说明它没有在A中实现。不过,这与"后藤定义"方法非常相似。
您可以使用重写说明符(从C++11开始),例如:
void SetStatus() override { }
您所期望的是得到一个编译错误。如果你得到了它,意味着函数(即这里的SetStatus()
)没有被声明,或者它被声明了,但签名不匹配。然后您可以确认没有覆盖并删除override specifier
。
相关文章:
- C++11 迭代向量的新方法?
- 确保模拟的 GTest 方法覆盖虚拟方法
- 如何使用方法覆盖在输出屏幕上显示堆栈整数值
- C ++中的方法覆盖:是编译时还是运行时多态性?
- C++私有纯虚拟方法覆盖为公共方法
- 主窗口的新方法不可见
- 我试着了解方法覆盖是如何工作的,不知道为什么输出 2
- 使用父类方法覆盖的多重继承
- 如果您用新版本覆盖共享库(当前由程序映射)会发生什么
- C++ - 调用子项方法覆盖父项列表中的内容
- 在C++使用新方法打印2d阵列
- 使用 char **,其中新元素覆盖以前的元素
- 一个类的方法覆盖另一个类的所有方法
- C 多重继承,虚拟方法覆盖问题和协变量返回类型
- 将对象分配给C 的预定义地址,而无需放置新方法
- G 破碎了?无法在课堂上添加新方法
- 用方法覆盖的C 继承
- 通过添加新方法来发展类
- 重新编译二进制类或派生类,以便在基类中添加新方法
- 如何检查是否正在编写新方法或覆盖现有方法