c ++ 11中覆盖和虚拟的组合

时间:2017-03-08 11:28:23

标签: c++ c++11

我想使用C ++ 11 override说明符,并注意到它可以与virtual一起使用。这有什么不同吗?请考虑以下类:

class Base
{
    virtual void fct() = 0;
};

class Derived1 : public Base
{
    void fct() override {}
};

class Derived2 : public Base
{
    virtual void fct() override {}
};

Derived1Derived2之间存在技术差异吗?

1 个答案:

答案 0 :(得分:4)

override 始终virtual一起使用。它用于强制您的虚函数覆盖基类中的虚函数。

旧规则意味着,如果 覆盖基类中的虚函数,它将自动虚拟,因此您可以跳过在代码中编写virtual。但是“概念上”virtual已经存在了。

所以,写virtual就没有任何区别了。由于您编写了override,函数必须覆盖基类函数(并且,通过扩展,它必须是虚函数),否则您的代码将无法编译。