码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 模板函数与模板类

时间:2016-05-30 23:29:16      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

一、模板函数

  函数模板提供了一类函数的抽象,即代表了一类函数。当函数模板被实例化后,它会生成具体的模板函数。例如下面便是一个函数模板:

  技术分享

  当实际调用它时,就会生成具体的模板函数:

  技术分享

    模板函数在调用过程中会进行数据类型的自动匹配(在不产生歧义的情况下),但如果需要指定类型的话,可以显示声明,如:

  技术分享

  这样,函数模板中的T就会被double所代替。

  自动匹配有以下的规则:

    1) 函数实参是否满足模板的实参(此时的判断没有数据类型的转换);

    2) 若不满足1), 函数实参进行数据转换在进行匹配;

    3) 若依旧不满足,则会编译错误。

  例如:我们声明了下面两个函数:

  技术分享

  当我们如此调用时:
  技术分享

  调用的是第二个max函数,因为第一个无法完成T的匹配,所以就会将字符B转换成整型,把9转成double型,从而调用第二个函数。

 

二、模板类
  模板类的使用和模板函数相似,只是在具体化模板类时需要显示声明模板实参,例如我们构造了一个模板类stack:

  技术分享

  T表示类型,capacity表示初始化时Stack的规定容量。

  当我们在书写类方法时,其格式如下:

  技术分享

  每一个类方法之前都要加上一个template的说明,其类名也要加上模板参数,而其在调用的时候格式如下;

  技术分享

  如上,我们声明了一个类型为int, 容量为15的Stack,接下来就可以使用类中的各种类方法了。

 

  //End.

  

  

 

C++ 模板函数与模板类

标签:

原文地址:http://www.cnblogs.com/Vincent-Bryan/p/5544120.html

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