【发布时间】:2018-02-16 12:55:52
【问题描述】:
我有一个继承自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;
}
【问题讨论】:
-
欢迎您。我们很乐意帮助如果您表明您已尽力而为并陷入困境。那你研究了什么?你试过编译这段代码吗?
-
@FrankS101 几乎在这个问题上是个骗子。该帖子的first answer 肯定也回答了这个问题。
-
代码在我的机器上编译并运行。这不是未定义的行为。 Arlo Belshee 指出,用于单元测试的模拟是一种代码气味,可以通过消除模拟的需要来帮助改进设计。
-
@Eljay 你能提供 Belshee 的这句话的链接吗?
标签: c++ inheritance virtual-functions