一个类可以继承自己具体化的另一个类模板吗?

时间:2014-12-15 10:04:48

标签: c++ inheritance c++11 template-classes

我正在浏览一些代码,我发现了类似的内容:

class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>

我想知道这是否有效。如果是,那么这不应该导致某种自定义循环,因为我们使用另一个依赖于GarbageCollectorProcess定义的类来定义GarbageCollectorProcess吗?

2 个答案:

答案 0 :(得分:5)

  

&#34;我想知道这是否有效。&#34;

是的,这是有效的,也是一种非常常见的模式,称为奇怪的重复模板模式,或简称CRTP

它曾用于实现静态多态性。

  

&#34;如果是,不应该导致某种自定义循环,因为我们使用另一个依赖于GarbageCollectorProcess定义的类来定义GarbageCollectorProcess?&#34; < / em>的

不,没有自定义循环。模板类只实例化一次。

答案 1 :(得分:1)

这是有效的事情。 这就是CRTP工作的方式。