美文网首页
奇异递归模板模式(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