我想使用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 {}
};
Derived1
和Derived2
之间存在技术差异吗?
答案 0 :(得分:4)
override
始终与virtual
一起使用。它用于强制您的虚函数覆盖基类中的虚函数。
旧规则意味着,如果 覆盖基类中的虚函数,它将自动虚拟,因此您可以跳过在代码中编写virtual
。但是“概念上”virtual
已经存在了。
所以,写virtual
就没有任何区别了。由于您编写了override
,函数必须覆盖基类函数(并且,通过扩展,它必须是虚函数),否则您的代码将无法编译。