虚函数可以被非虚函数覆盖吗?

2024-02-03

在此代码中:

class Base {
public:
    virtual void method() = 0;
};

class Derived1 : public Base{
public:
    virtual void method() override { }
};

class Derived2 : public Base{
public:
    void method() override { }
};

有什么区别吗Derived1 and Derived2?


来自部分10.3 虚函数c++11 标准(草案 n3337)的第 2 点:

如果在类 Base 和类 Derived 中声明了虚拟成员函数 vf,则直接或间接派生 来自 Base,具有相同名称、parameter-type-list (8.3.5)、cv-qualification 和 refqualifier 的成员函数 vf (或缺少相同的)作为声明 Base::vf ,那么 Derived::vf 也是虚拟的(无论它是否是 如此声明)它会覆盖 Base::vf。

So Derived2::method也是virtual,即使它没有明确声明。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

虚函数可以被非虚函数覆盖吗? 的相关文章

随机推荐