当一个方法在类中声明virtual
时,它在派生类中的覆盖也会被自动考虑virtual
,并且 C++ 语言virtual
在这种情况下使这个关键字是可选的:
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
virtual
我的问题是:选择可选的理由是什么?
我知道编译器并非绝对有必要被告知,但我认为如果编译器强制执行这样的约束,开发人员将受益。
例如,有时当我阅读其他人的代码时,我想知道一个方法是否是虚拟的,我必须追踪它的超类来确定这一点。并且一些编码标准(谷歌)使得将virtual
关键字放在所有子类中是“必须的”。