美文网首页
奇异递归模板模式(Curiously Recurring Tem

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

作者: zxlele_c763 | 来源:发表于2021-03-17 21:07 被阅读0次

奇异递归模板模式(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++中主要有两种用途:
  • 静态多态(static polymorphism)
  • 添加方法同时精简代码

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;
}

相关文章

网友评论

      本文标题:奇异递归模板模式(Curiously Recurring Tem

      本文链接:https://www.haomeiwen.com/subject/ghgecltx.html