c++ - 函数声明中缺少 'virtual' 限定符

标签 c++ inheritance virtual

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

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/

相关文章:

c++ - 使用基类的引用访问派生类的私有(private)成员函数

c++ - 为什么要为左值参数调用 move 赋值运算符?

c++ - 在信号处理函数中使用本地互斥量来同步共享数据

java - JpaSystemException - 无法设置字段值 [auditEntity] 扩展扩展实体

c++ - 从基调用派生类的虚函数导致 "not a member"错误

c++ - C++中的虚函数实例化有什么区别?

c++ - Mex 函数未解析的外部

c++ - 如何分配和检索成员变量中的值?

C++: "Field ' object_var'必须在基类的构造函数中初始化"

c# - 如何以编程方式获取 Windows Azure 中的虚拟机列表