在此代码中:
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(使用前将#替换为@)