我的意思是,如果我在班级B里面扩展其他一些A级(不是我创建的),你怎么知道你正在编写的方法:
void SetStatus() { }
它尚未声明,你只是覆盖它?右键单击 - >每次都转到定义? (例如在VS2015上)。
答案 0 :(得分:1)
如果您有代码 - 您可以在基类中声明方法final
,那么如果您尝试覆盖虚拟方法,代码将无法编译。
如果你想能够覆盖它,你可以尝试调用A :: SetStatus();在B :: SetStatus()的定义中。
如果您的IDE显示错误而且它没有编译,那么它在A中没有实现。 这非常类似于" Goto定义"接近但是。
答案 1 :(得分:0)
您可以使用override specifier(自C ++ 11起),例如:
void SetStatus() override { }
您期望得到编译错误。如果你得到它,意味着该函数(即此处SetStatus()
)未被声明或已声明,但签名不匹配。然后,您可以确认没有覆盖并删除override specifier
。