C++ 模板:奇特递归模板模式(Curiously Recurring Template Pattern -CRTP)和 静多态(Static polymorphism)

 

C++: Prefer Curiously Recurring Template Pattern (CRTP) to Template Pattern:http://www.codeproject.com/Tips/537606/Cplusplus-Prefer-Curiously-Recurring-Template-Patt

静多态(Static polymorphism):http://en.wikipedia.org/wiki/Template_metaprogramming#Static_polymorphism

 

在“GoF”的设计模式一书中定义的“模板模式”,与C++模板无关,它是一种行为模式。

“奇特递归模板模式(CRTP)”是基于模板模式的改良,它是这样一种C++ idiom:  类 X 继承于基类模板实例,而该模板实例以 X 作为模板参数。此idiom名称由Jim Coplien创造,他曾在一些早期的C++模板代码中观察到此模式。此技巧可以实现如同使用虚函数那样的效果,但是没有(运行时期)动态多态的额外损耗(以及一些弹性的损失)。CRTP可作为模板模式的替代,提供动态多态--而并不要求在运行时期实现。此模式在Windows ATL/WTL 库中广泛使用。

posted on 2013-05-12 19:22  qinfengxiaoyue  阅读(663)  评论(0编辑  收藏  举报