在浏览一些旧代码时,我遇到了类似于以下内容的内容:
class Base
{
public:
virtual int Func();
...
};
class Derived : public Base
{
public:
int Func(); // Missing 'virtual' qualifier
...
};
代码编译良好 (MS VS2008),没有警告(级别 4)并且按预期工作 - Func
是虚拟的,即使派生类中缺少虚拟限定符。现在,除了引起一些困惑之外,这段代码是否有任何危险,或者我是否应该全部更改它,添加 virtual
限定符?
最佳答案
virtual
将被传递到派生类中的所有覆盖函数。添加关键字的唯一真正好处是表明您的意图,派生类定义的不经意观察者将立即知道 Func
是虚拟的。
即使是扩展 Derived 的类也将具有虚 Func 方法。
引用:Virtual Functions在 MSDN 上。向下滚动页面查看
The virtual keyword can be used when declaring overriding functions in a derived class, but it is unnecessary; overrides of virtual functions are always virtual.
关于c++ - 函数声明中缺少 'virtual' 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340437/