奇异递归模板模式(Curiously Recurring Tem

2021-03-17  本文已影响0人  zxlele_c763

奇异递归模板模式(Curiously Recurring Template Pattern)

奇异递归模板模式(Curiously Recurring Template Pattern,CRTP),CRTP是C++模板编程时的一种惯用法(idiom):把派生类作为基类的模板参数。更一般地被称作F-bound polymorphism。
1980年代作为F-bound polymorphism被提出。Jim Coplien于1995年称之为CRTP。
CRTP在C++中主要有两种用途:

1. static ploymorphism

#include <iostream>
using namespace std;

template <typename Child>
struct Base
{
    void interface()
    {
        static_cast<Child*>(this)->implementation();
    }
};

struct Derived : Base<Derived>
{
    void implementation()
    {
        cerr << "Derived implementation\n";
    }
};

int main()
{
    Derived d;
    d.interface();  // Prints "Derived implementation"

    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读