现在的位置: 首页 > 综合 > 正文

对type traits的理解

2013年04月11日 ⁄ 综合 ⁄ 共 572字 ⁄ 字号 评论关闭

最近在看关于c++ type traits方面的资料,顺便写一下自己的理解,怕以后忘了,不对的地方望大家指正。

一般来说,type traits就是取得c++中一种类型所拥有的信息,可以是原始类型或自定义的类类型。这种工作如果放在java或c#中是很容易做到的,因为他们拥有反射这个强大的工具。而不同于拥有原数据的java和.net,c++要完成这样的工作不是那么直接的,而且原理也不一样,java和.net获得类型信息都是在运行时获得的,c++则是在编译时确定的。(这里要更正一下啊,java和.net可以获得一个对象(变量)的类型信息,而c++不能通过type traits获得一个变量的类型信息,而只能获得某一种类型的相关信息)

但是如果用得好,type traits是一个很强大的工具,它能获得一个类型诸如是不是一个原始指针,是不是一个数组,是不是拥有某个成员函数等等信息。依靠这些信息我们就能做更多的事情。

c++ type traits 一般和模版和模版的特化及偏特化联系得比较紧密,主要是用模版偏特化的这个特性来实现。偏特化介于完全特化和完全泛化之间,又称部分特化(个人觉得这个翻译好理解一些)。完全泛化是针对所有的类型,完全特化是针对某一特定的类型,而偏特化则是针对有某种特征的一部分的类型。

对type traits的学习还不深入,现在只能写这么多了。

抱歉!评论已关闭.