Sil*_*ane 6 c++ virtual inheritance overriding
我查看了互联网上的问题,但找不到任何答案,所以我在这里.
指定从纯虚拟派生的函数的覆盖是否正确:
class baseClass
{
public:
virtual void myFunction() = 0;
}
class derivedClass : public baseClass
{
public:
virtual void myFunction() override;
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?
我的第二个问题是:我是否必须在derivedClass中为我的函数指定virtual,即使没有类将从我的派生类继承(它将是最终的)?
非常感谢您的回答!
它是否正确?
是的。Override 确保该函数是虚函数并重写基类中的虚函数。如果不是这样,则程序格式错误(生成编译时错误)。
即使没有类会从我的派生类继承(它将是最终的),我是否必须在派生类中为我的函数指定 virtual?
不,你不知道。但即使您忽略虚拟说明符,它仍然是虚拟的。因为它已在您的BaseClass.
如果某个成员函数 vf 在类 Base 中被声明为 virtual,并且某个直接或间接从 Base 派生的类 Derived 具有具有相同成员函数的声明
- 姓名
- 参数类型列表(但不是返回类型)
- 简历限定符
- 引用限定符
那么Derived类中的这个函数也是virtual的(无论其声明中是否使用了virtual关键字)并且重写了Base::vf(无论其声明中是否使用了override一词)。Base::vf 不需要可见(可以声明为私有,或使用私有继承来继承)即可被覆盖。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |