【发布时间】:2011-06-21 10:37:39
【问题描述】:
我正在考虑在实时应用程序中使用虚拟继承。使用虚拟继承是否会产生类似于调用虚拟函数的性能影响?有问题的对象只会在启动时创建,但我担心层次结构中的所有函数都将通过 vtable 调度,或者只有来自虚拟基类的函数才会调度。
【问题讨论】:
-
除非您使用多重继承,否则实际上不需要使用虚拟继承。
-
@ZacHowland,除非您在 Google 测试中使用模拟。 (gtest)
-
@Amigable:没有“除非”。使用 Google Test 时,在处理多重继承时,您仍然只使用虚拟继承。
-
@ZacHowland,在这种情况下我的错误。我认为能够模拟课程是必要的。但我还没有真正开始使用它......所以我知道什么。
-
Google 测试框架允许您为非纯抽象类创建模拟对象,因此当您从这些类继承时,您可能会遇到需要虚拟继承的菱形情况(多重继承) .但是,使用纯抽象(又名“接口”)并使用新实现模拟接口仍然是一种更好的做法。它将使您的测试代码更易于编写和维护(除了使您的实际代码更易于编写和维护)。
标签: c++ performance real-time virtual-inheritance