如何检查是否正在编写新方法或覆盖现有方法

How do you check if you are writing a new method or override existing one?

本文关键字:新方法 覆盖 有方法 何检查 检查 是否      更新时间:2023-10-16

我的意思是,如果我在扩展其他类A(不是我创建的)的类B中,你怎么知道你正在编写的方法:

void SetStatus() { }

它还没有声明,而你只是覆盖它?右键单击->每次都转到定义?(例如VS2015)。

如果你有代码-你可以在基类中声明方法final,那么如果你试图重写一个虚拟方法,代码就不会编译。

如果你想覆盖它,你可以尝试调用A::SetStatus();在B::SetStatus()的定义中。

如果您的IDE显示错误并且没有编译,则说明它没有在A中实现。不过,这与"后藤定义"方法非常相似。

您可以使用重写说明符(从C++11开始),例如:

void SetStatus() override { }

您所期望的是得到一个编译错误。如果你得到了它,意味着函数(即这里的SetStatus())没有被声明,或者它被声明了,但签名不匹配。然后您可以确认没有覆盖并删除override specifier