1

我正在浏览一些代码,我发现了这样的东西:

class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>

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

4

2 回答 2

5

“我想知道这是否是一件有效的事情。”

是的,这是有效的,也是一种非常常见的模式,称为 Curiously Recurring Template Pattern,或简称CRTP

例如,它用于实现静态多态性。

“如果是,这不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess 吗?”

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

于 2014-12-15T10:08:04.043 回答
1

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

于 2014-12-15T10:06:00.257 回答