Eri*_*ric 6 c++ overriding virtual-functions c++11
在这段代码中:
class Base {
public:
virtual void method() = 0;
};
class Derived1 : public Base{
public:
virtual void method() override { }
};
class Derived2 : public Base{
public:
void method() override { }
};
Run Code Online (Sandbox Code Playgroud)
有什么区别Derived1和Derived2?
hmj*_*mjd 16
从第10.3节c ++ 11标准的虚函数(草案n3337)第2点:
如果虚拟成员函数vf在类Base和Derived类中声明,直接或间接从Base派生,则具有相同名称的成员函数vf,parameter-type-list(8.3.5),cv-qualification和声明了Base :: vf的refqualifier(或不存在),然后Derived :: vf也是虚拟的(无论是否声明)并且它覆盖Base :: vf.
所以Derived2::method也virtual,即使它没有明确宣布为.