码迷,mamicode.com
首页 > Web开发 > 详细

metaprogramming笔记

时间:2015-11-20 22:58:23      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

动态多态与静态多态

动态多态:允许我们通过单个基类指针或引用处理多个派生类型的对象. 模板元编程中强调静态多态,允许不同类型的对象以同样的方式被操纵,只要它们支持某种共通的语法即可.

动态多态,连同"延迟绑定"或"运行期派发",是面向对象程序的关键特性.静态多态(也称参数化多态),是泛型编程的本质要素.

 

在面向对象的编程文献中将一个带有大量成员的类称作blob.类的成员彼此"耦合",因为它们必须被声明在一起.为了避免耦合并提高模块化程度,应该避免使用这种反模式.替代

方式是采用独立的元函数来定义单独的traits

 

元数据:可以被C++编译期系统操纵的"值"可以被认为是元数据.在模板元编程中,两种最常见的数据是类型和整数(包括bool)常量. C++的编译期部分通常被称为"纯函数式语言"

,因为元数据是可变的并且元函数不可以有任何副作用.

 

多态:由于C++模板并非生来就多态地处理不同种类的元数据,因此MPL遵从使用type wrapper来包装非类型元数据的约定.尤其是,数值型元数据被表示为一个类型,该类型具有一个名为::value的

嵌套数值常量成员

  元函数

  数值型元函数

  无参元函数:一般是作为元函数特化,解决基础数据类型的问题

 

  Traits:一种通过类模板特化在小片元数据之间建立关联的技术. Traits惯用法的一个关键特性是它是非侵入性的:我们可以在不修改被关联项自身的前提下,建立一个新的映射.MPL元函数可以看做

traits的一个特例,它们对于任何输入都只有一个结果值.

metaprogramming笔记

标签:

原文地址:http://www.cnblogs.com/hustxujinkang/p/4982445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!