C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
来源:互联网 发布:c语言 gbk转unicode 编辑:程序博客网 时间:2024/04/30 18:08
http://blog.csdn.net/lifesider/article/details/6527653
意图:
使用派生类作为模板参数特化基类。
与多态的区别:
多态是动态绑定(运行时绑定),CRTP是静态绑定(编译时绑定)
在实现多态时,需要重写虚函数,因而这是运行时绑定的操作。
然而如果想在编译期确定通过基类来得到派生类的行为,CRTP便是一种独佳选择,它是通过派生类覆盖基类成员函数来实现静态绑定的。
范式:
示例代码:
缺点:
CRTP由于基类使用了模板,目前的编译器不支持模板类的导出,因而不能使用导出接口。
其它使用领域:
在数值计算中,往往要对不同的模型使用不同的计算方法(如矩阵),一般使用继承提供统一接口(如operator运算符),但又希望不损失效率。这时便又可取CRTP惯用法,子类的operator实现将覆盖基类的operator实现,并可以编译期静态绑定至子类的方法。
英文链接:http://en.wikibooks.org/wiki/More_C++_Idioms/Curiously_Recurring_Template_Pattern
0 0
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- 奇异递归模板模式(Curiously Recurring Template Pattern,CRTP)
- 奇异递归模板模式( Curiously Recurring Template Pattern,CRTP)1
- 递归模板模式--The curiously recurring template pattern
- 关于CRTP(Curiously Recurring Template Prattern)的使用
- curiously recurring template pattern
- Curiously Recurring Template Pattern
- C++惯用法:奇特的递归模板模式
- Curiously recurring template pattern (zz)
- Curiously Recurring Template
- 奇异递归模板模式(CRTP)应用--表达式模板(expression template) 2
- CRTP 奇异递归模板模式
- 奇特递归模板模式
- 模板模式(Template Pattern)
- 模板模式(Template Pattern)
- CSS3 的 transition 和 animation
- RxJava—操作符(过滤、合并、转换)
- 关于同网段内主机之间通信细节
- Linux常用快捷键
- Linux网络编程面试--tcp和udp的区别
- C++惯用法:奇特的递归模板模式(Curiously Recurring Template Pattern,CRTP,Mixin-from-above)
- 表格分页2
- 数字信封详解
- 告诉你哪些产品适合微信营销?
- Obiee+echarts实例之100%竖堆叠图
- 提交按钮
- 第4章 处理用户输入与显示数据------------(移位shift、命令行参数选项)
- java中利用Comparator接口实现自定义排序技巧。
- java命令执行jar包的方式