我编写了一个带有虚方法的基类和两个公开继承该基类的派生类。我使用“覆盖”来实现抽象基类的纯虚拟版本。在Xcode和许多其他IDE中,通常会有一个关键命令,用于在单击方法声明时按住,该声明将直接导航到其定义。我觉得我的虚拟纯声明被“链接”到我的派生类重写方法,因为我能够通过使用Command +点击虚拟纯声明从基类导航到派生类,但是,我是能够自由地删除“override”关键字并编译没有错误,当我一直认为在实现纯虚方法的定义时需要“覆盖”。解释这一点的任何帮助都会很棒:
这是抽象基类:
class MillisecondsHertzValueBase
{
private:
// Removed code to reduce length
public:
MillisecondsHertzValueBase();
virtual ~MillisecondsHertzValueBase();
virtual void calculateValues (const double &input) = 0;
// Removed code to reduce length
};
这是派生类头文件之一,我可以在其中自由删除“override”关键字:
class MillisecondValues : public MillisecondsHertzValueBase
{
public:
~MillisecondValues();
void calculateValues (const double &input) override;
};
以下是实施:
MillisecondValues::~MillisecondValues() {}
void MillisecondValues::calculateValues (const double &input)
{
// Removed code to reduce length
}