我很好奇为什么新的C++11关键字override
被强制要求在方法声明之后以与const
一致的方式出现,而不是virtual
?
class SomeBaseClass {
virtual void DoPolymorphicBehavior() = 0;
...
class SomeDerrivedClass : public SomeBaseClass {
void DoPolymorphicBehavior() override;
...
为什么不允许在完全相同的位置(甚至代替)
virtual
中使用它?class SomeBaseClass {
virtual void DoPolymorphicBehavior() = 0;
...
class SomeDerrivedClass : public SomeBaseClass {
override void DoPolymorphicBehavior();
...
这样可以让我在源代码中轻松地搜索和替换派生类以利用新关键字,并从编译器中获得帮助以查找错误。然而,由于C++11在语法上将其放置在不同的位置,因此我必须手动更新成千上万行的源代码才能从新的编译器功能中获益。
这个选择肯定有充分的理由吧?