【发布时间】:2014-10-20 12:02:50
【问题描述】:
我们可以使用新的 C++ 关键字 final 声明一个最终/密封的不可继承类。
class Generator final
{
};
这个类可能继承自其他类,可能有也可能没有 virtual(继承与否)。但是,如何使它成为final,却又允许一个类继承它呢?
我们主要需要从真实类派生一个模拟类(有或没有后期绑定,因此virtual 并不重要)。如何使其工作:
class MockGenerator : Generator{};
但不允许任何其他继承?
【问题讨论】:
-
我不认为你可以。一旦类/结构是最终的,就是这样,游戏继承方式
-
我同意 - 我不认为在 C++11 中你可以覆盖 'final' 关键字。如果它是最终的 - 它是最终的。但是,也许您可以考虑使类不可继承的其他方法(取决于您要如何使用它):parashift.com/c++-faq/final-classes.html
-
另一个问题:为什么要模拟最后一堂课?你不应该模拟一个界面,以防你的architecture is ok?
标签: c++ unit-testing c++11 c++14