我最近在派生类中看到了代码放在virtual函数前面的代码.这是常见的吗?我觉得这很奇怪,有点让我措手不及.
编辑:我不是在问虚拟是什么,我问为什么有人会将虚拟放在已经覆盖其基类中的虚函数的派生类中.
EX:
class B {
public:
virtual void foo();
....
};
class D : public B {
public:
virtual void foo(); // could have just put void foo();
...
};
Run Code Online (Sandbox Code Playgroud)
Jam*_*ran 26
virtual在最高(最少派生)级别的可重写函数需要.它是可选的,但在较低(更多派生)的水平上是无害的.它可以自我记录代码.
我看不出有什么奇怪的。在许多情况下(如果不是大多数时候)程序员通过从基类复制粘贴来在派生类中创建覆盖函数的声明。花费额外的精力来手动删除冗余virtual说明符是没有意义的。此外,显式virtual可以更容易地查看哪些函数是虚拟的。