您的位置:首页 > 编程语言 > C语言/C++

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

2013-05-12 19:22 986 查看
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 库中广泛使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: