当一个方法是在类中声明为virtual
,其在派生类中重写被自动视为virtual
以及和C++语言,使这个关键字virtual
在这种情况下可选:为什么'virtual'对于派生类中的重写方法是可选的?
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
我的问题是:什么是否可以选择virtual
?
我知道编译器不是绝对必须被告知,但我认为如果编译器强制执行这样的约束,开发人员将会受益。
例如,有时当我读别人的代码时,我不知道一个方法是否是虚拟的,我必须追踪它的超类来确定它。而且一些编码标准(Google)使其成为所有子类中关键字virtual
的'必须'。
认为你想从'NonVirtualBase'中删除'= 0' :) – 2010-06-03 07:30:49
@Matthieu - 很棒!我今天很昏昏欲睡xD – 2010-06-03 07:32:50