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