如何检查您是在编写新方法还是覆盖现有方法?

时间:2016-07-29 14:20:31

标签: c++ override

我的意思是,如果我在班级B里面扩展其他一些A级(不是我创建的),你怎么知道你正在编写的方法:

void SetStatus() { }

它尚未声明,你只是覆盖它?右键单击 - >每次都转到定义? (例如在VS2015上)。

2 个答案:

答案 0 :(得分:1)

如果您有代码 - 您可以在基类中声明方法final,那么如果您尝试覆盖虚拟方法,代码将无法编译。

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

如果您的IDE显示错误而且它没有编译,那么它在A中没有实现。 这非常类似于" Goto定义"接近但是。

答案 1 :(得分:0)

您可以使用override specifier(自C ++ 11起),例如:

void SetStatus() override { }

您期望得到编译错误。如果你得到它,意味着该函数(即此处SetStatus())未被声明或已声明,但签名不匹配。然后,您可以确认没有覆盖并删除override specifier