Edv*_*yan 5 c++ inheritance virtual-functions
我有一个从类B继承的类A。所以类A的接口包含类B的一些纯虚函数和类A的一些函数。现在我需要为类A进行单元测试,所以想要一些接口我可以嘲笑的 A 类。所以现在我想知道给定的代码在 C++14 中是否正确,是否可以导致 UB:
class Base1 {
public:
virtual void func() = 0;
};
class Base2 {
public:
virtual void func() = 0;
};
class Derived : public Base1, public Base2 {
public:
void func() override { }
};
int main() {
Derived d;
d.func();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是的,这段代码格式良好,并且void func()覆盖了A::func()和B::func()。来自 C++14 标准:
[类.虚拟]
- 如果虚拟成员函数在 a和 a 中
vf声明 ,直接或间接从 派生,则具有相同名称、参数类型列表 (8.3.5)、cv 限定符和 ref 限定符(或缺少与声明的相同) ,那么也是虚拟的(无论是否如此声明)并且它覆盖 .class Baseclass DerivedBasevfBase::vfDerived::vfBase::vf
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |