虚拟限定符到基类的虚函数,在派生类中有什么区别?
class b
{
public:
virtual void foo(){}
};
class d : public b
{
public:
void foo(){ .... }
};
Run Code Online (Sandbox Code Playgroud)
要么
class d : public b
{
public:
virtual void foo(){ .... }
};
Run Code Online (Sandbox Code Playgroud)
这两个声明有什么不同,除了它让d的孩子知道foo()的虚拟性?
没什么区别.foo在从b(及其后代)派生的所有类中都是虚拟的.
从C++ 03标准,§10.3.2:
如果虚拟成员函数vf在类Base和Derived类中声明,直接或间接从Base派生,则声明具有与Base :: vf相同名称和相同参数列表的成员函数vf,然后Derived :: vf也是虚拟的(无论是否如此声明)并且它覆盖Base :: vf.
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |