在搜寻一些旧代码时,我遇到了类似于以下内容的内容:
class Base
{
public:
virtual int Func();
...
};
class Derived : public Base
{
public:
int Func(); // Missing 'virtual' qualifier
...
};
该代码编译良好(MS VS2008),没有警告(级别 4)并且按预期工作 -Func
即使派生类中缺少 virtual 限定符,也是 virtual 的。现在,除了引起一些混乱之外,这段代码是否有任何危险,或者我应该全部更改,添加virtual
预选赛?
The virtual
将被延续到派生类中的所有重写函数。添加关键字的唯一真正好处是表明您的意图,派生类定义的临时观察者会立即知道:Func
是虚拟的。
即使扩展 Derived 的类也将具有虚拟 Func 方法。
参考:虚拟功能 http://msdn.microsoft.com/en-us/library/0y01k918.aspx在 MSDN 上。向下滚动页面即可查看
The virtual可以在以下情况下使用关键字
在 a 中声明重写函数
派生类,但没有必要;
虚函数的重写是
总是虚拟的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)