我正在浏览一些代码,我发现了这样的东西:
class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>
我想知道这是否是一件有效的事情。如果是,这不应该导致某种自定义循环,因为我们使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?
我正在浏览一些代码,我发现了这样的东西:
class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>
我想知道这是否是一件有效的事情。如果是,这不应该导致某种自定义循环,因为我们使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess?
“我想知道这是否是一件有效的事情。”
是的,这是有效的,也是一种非常常见的模式,称为 Curiously Recurring Template Pattern,或简称CRTP。
例如,它用于实现静态多态性。
“如果是,这不应该导致某种自定义循环,因为我们正在使用另一个依赖于 GarbageCollectorProcess 定义的类来定义 GarbageCollectorProcess 吗?”
不,没有自定义循环。模板类只实例化一次。
这是有效的事情。这就是CRTP的工作方式。