【问题标题】:Can a class inherit from another class template concretized by itself? [duplicate]一个类可以继承另一个自己具体化的类模板吗? [复制]
【发布时间】:2015-02-13 09:37:47
【问题描述】:
我正在浏览一些代码,我发现了这样的东西:
class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>
我想知道这样做是否有效。如果是,这难道不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?
【问题讨论】:
标签:
c++
inheritance
c++11
template-classes
【解决方案1】:
“我想知道这是否可行。”
是的,这是有效的,也是一种非常常见的模式,称为 Curiously Recurring Template Pattern,简称 CRTP。
例如用于实现静态多态。
“如果是,这难道不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?”
不,没有自定义循环。模板类只实例化一次。