【发布时间】:2013-09-16 21:44:06
【问题描述】:
在 C++11 之前,在派生类中重写虚函数时,建议在派生类函数中也添加 virtual 关键字以明确意图。
如今,此类函数被标记为“覆盖”,其中包括必须存在虚拟基函数的概念。因此我现在更喜欢省略虚拟:
class Derived: public Base {
public:
void Overriden() override;
// Instead of: virtual void Overriden() override;
};
但是,这会导致 MSVC 2012 中出现 IntelliSense 错误: 'override' 修饰符需要一个带有显式 'virtual' 关键字的虚函数声明
很明显编译器编译了类,但是错误让我思考了一下。添加 virtual 关键字还有正当理由吗?
【问题讨论】:
-
只是风格上的。如果该函数可以被覆盖,我会使用
virtual。 (如果是final,我不会。)这对读者来说似乎更直观。 -
我赞成 Stefano Falasca 的解释,但接受 Klaus 的回答,因为它似乎更适合这个问题。
-
virtual表示“可以被覆盖”,而不是“这是一个覆盖”。
标签: c++ c++11 overriding virtual