8

这种模式的目的是什么?这叫什么?我第一次看到它时看起来很奇怪,虽然我现在已经看过很多次了。

template<typename Derived>
struct Base {
  //...
};

struct Example : Base<Example> {
  //...
};
4

3 回答 3

10

它被称为Curiously Recurring Template模式,并允许静态多态性。

当您想向特定类添加功能但希望该实用程序在一般情况下可用时,它很有用。通过使实用程序依赖并使用模板参数,您可以实现两者。

于 2010-10-27T05:31:03.270 回答
6

奇怪的是重复出现的模板模式,或者我们称之为CRTP 。

于 2010-10-27T05:30:59.173 回答
6

我认为您指的是CRTP。也可以参考这里

于 2010-10-27T05:31:07.177 回答