当前位置:  开发笔记 > 编程语言 > 正文

在函数声明中缺少'virtual'限定符

如何解决《在函数声明中缺少'virtual'限定符》经验,为你挑选了1个好方法。

在浏览一些旧代码时,我遇到了类似于以下内容的内容:

class Base
{
public:
    virtual int Func();
    ...
};

class Derived : public Base
{
public:
    int Func(); // Missing 'virtual' qualifier
    ...
};

代码编译良好(MS VS2008)没有警告(级别4)并且它按预期工作 - Func即使虚拟限定符在派生类中缺失也是虚拟的.现在,除了造成一些混淆之外,这段代码是否有任何危险,或者我应该更改所有内容,添加virtual限定符?



1> Blair Conrad..:

virtual会在派生类中延续到全部覆盖功能.添加关键字的唯一真正好处是表示您的意图,Derived类定义的随意观察者将立即知道它Func是虚拟的.

甚至扩展Derived的类也将具有虚拟Func方法.

参考:MSDN上的虚拟功能.向下滚动页面以查看

虚拟关键字可以声明在一个派生类中重写功能时,可以使用,但它是不必要的; 虚函数的覆盖总是虚拟的.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有