标签:
动态多态与静态多态
动态多态:允许我们通过单个基类指针或引用处理多个派生类型的对象. 模板元编程中强调静态多态,允许不同类型的对象以同样的方式被操纵,只要它们支持某种共通的语法即可.
动态多态,连同"延迟绑定"或"运行期派发",是面向对象程序的关键特性.静态多态(也称参数化多态),是泛型编程的本质要素.
在面向对象的编程文献中将一个带有大量成员的类称作blob.类的成员彼此"耦合",因为它们必须被声明在一起.为了避免耦合并提高模块化程度,应该避免使用这种反模式.替代
方式是采用独立的元函数来定义单独的traits
元数据:可以被C++编译期系统操纵的"值"可以被认为是元数据.在模板元编程中,两种最常见的数据是类型和整数(包括bool)常量. C++的编译期部分通常被称为"纯函数式语言"
,因为元数据是可变的并且元函数不可以有任何副作用.
多态:由于C++模板并非生来就多态地处理不同种类的元数据,因此MPL遵从使用type wrapper来包装非类型元数据的约定.尤其是,数值型元数据被表示为一个类型,该类型具有一个名为::value的
嵌套数值常量成员
元函数
数值型元函数
无参元函数:一般是作为元函数特化,解决基础数据类型的问题
Traits:一种通过类模板特化在小片元数据之间建立关联的技术. Traits惯用法的一个关键特性是它是非侵入性的:我们可以在不修改被关联项自身的前提下,建立一个新的映射.MPL元函数可以看做
traits的一个特例,它们对于任何输入都只有一个结果值.
标签:
原文地址:http://www.cnblogs.com/hustxujinkang/p/4982445.html