注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

类模板template的一些知识总结  

2014-10-28 15:06:47|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

类模板要在类定义的前面加上:

template  <class Type>    //这里Type也可以是T,class可以用typename代替

class  Class_name{...};

类模板中方法的声明和普通类一样,但在方法定义的时候,方法名字前面要加:

class_name<Type>

形如:

template  <class Type>

class_name<Type>::Class_name(arguments){...}; //类模板构造函数

 

template  <class Type>

void Class_name<Type>::methodarguments{...}; //类模板成员函数

 

main函数中可以这样使用类模板:

class_name<string>  obj1;

class_name<const char *>  obj2(parameter);

数组模板:

template <class T,int n>

class ArrayTP{...};

递归使用模板:

ArrayTP< ArrayTP<int ,5>, 10> obj3;


显式实例化、隐式实例化、模板具体化、显式具体化

实例化就是类定义在声明类对象并指定特定类型时生成。

隐式实例化例子:(声明一个或多个对象,并指出所需的类型)

class  class_name<int>  obj4;

类名是class_name<int> ,它称为模板具体化

使用关键字template声明类的特定具体化时,将发生显式实例化

template  class  class_name<int>;

编译器将会用模板生成一个int 的具体化class_name<int>

显式具体化template<>开头,后加模板类名称,再加上具体化类型:

template <> class class_name<char *>{...};

 

类模板也可以指定多个泛型,也可以由非类的类型参数(比如intdouble等):

template  <class T,class TT,int n>

class class_name{...};

下面语句就是隐式实例化:

class_name<char,string,5> obj5;

 

类模板也可以包含类模板参数:

template < tamplate <typename T> class TT,typename TN,int n>

class class_name{...};

tamplate <typename T> class是类型,TT是参数

  评论这张
 
阅读(230)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017