更多python、PHP、JAVA、C、C++教程请到友情连接: 菜鸟教程https://www.piaodoo.com

茂名一技http://www.enechn.com

ppt制作教程步骤 http://www.tpyjn.cn

兴化论坛http://www.yimoge.cn

电白论坛 http://www.fcdzs.com

表格制作excel教程 http://www.tsgmyy.cn

学习通 http://www.hssi.net/

函数模板可以适用泛型来定义函数,其中泛型可以是(int, double, float)等替换。在函数重载过程中,通过将类型作为参数传递给模板,可使编译器自动产生该类型的函数。

工作原理:比如需要定义一个比大小的max函数,有三种类型的数据(int,double,float),可能就需要编写三个函数,这样既浪费时间,且容易出错。如:

#include <iostream>

using namespace std;

int Max(int a, int b);
double Max(double x, double y);
float Max(float s, float t);

int main()
{
cout << Max(1, 2) << endl;

cout &lt;&lt; Max(3.0, 4.0) &lt;&lt; endl;cout &lt;&lt; Max(5.23, 5.24) &lt;&lt; endl;return 0;

}

int Max(int a, int b)
{
return a > b ? a : b;
}

double Max(double x, double y)
{
return x > y ? x : y;
}

float Max(float s, float t)
{
return s > t ? s : t;
}

结果如下:

从上面就可以看出一个很简单的比较大小的函数,居然写的这么繁琐,显然增加了工作量,极大降低了工作效率,因此,函数模板的出现十分有效的解决了这个问题。函数模板允许以任意类型的方式定义函数,有两种形式例如:

形式1:

template <typename Anytype> //template是函数模板的关键字
void Swap(Anytype &a,Anytype &b)
{Anytype temp;temp=a;a=b;b=temp;
}

形式2:

template <class Anytype> //class是函数模板的关键字
void Swap(Anytype &a,Anytype &b)
{Anytype temp;temp=a;a=b;b=temp;
}

 使用函数模板之后的代码如下:

形式1 :

#include <iostream>

using namespace std;

template <typename T>
T Max(T a, T b);
/* double Max(double x, double y);
float Max(float s, float t); */

int main()
{
cout << Max(1, 2) << endl;

cout &lt;&lt; Max(3.0, 4.0) &lt;&lt; endl;cout &lt;&lt; Max(5.23, 5.24) &lt;&lt; endl;return 0;

}

template <typename T>
T Max(T a, T b)
{
return a > b ? a : b;
}

 形式2:

#include <iostream>

using namespace std;

template <class T>
T Max(T a, T b);

int main()
{
cout << Max(1, 2) << endl;

cout &lt;&lt; Max(3.0, 4.0) &lt;&lt; endl;cout &lt;&lt; Max(5.23, 5.24) &lt;&lt; endl;return 0;

}

template <class T>
T Max(T a, T b)
{
return a > b ? a : b;
}

结果如下:

对比之下,明显精简了很多。

到此这篇关于C++函数模板的使用详解的文章就介绍到这了,更多相关C++函数模板内容请搜索菜鸟教程www.piaodoo.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持菜鸟教程www.piaodoo.com!

C++函数模板的使用详解相关推荐

  1. python中tile的用法_python3中numpy函数tile的用法详解

    tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组.比如tile(A,n),功能是将数组A重复n次,构成一个新的数组,我们还是使用具体的例子来说明问题 ...

  2. C++ - 类模板(class template) 详解 及 代码

    类模板(class template) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/16906827 类模板(c ...

  3. ecshop模板smarty foreach详解

    Smarty目录: /libs Smarty的功能类目录 /tempalates 模板文件目录 /templates_c 模板缓存文件目录 /configs 配置文件目录 /cache 缓存文件目录 ...

  4. c++之模板初阶详解!

    c++之模板初阶详解 文章目录 c++之模板初阶详解 泛型编程 函数模板 函数模板概念 函数模板格式 模板的原理 函数模板的实例化 模板实例化的个数 对于同不同类型的传参! 如何处理这个问题呢? 关于 ...

  5. 在python中使用关键字define定义函数_python自定义函数def的应用详解

    这里是三岁,来和大家唠唠自定义函数,这一个神奇的东西,带大家白话玩转自定义函数 自定义函数,编程里面的精髓! def 自定义函数的必要函数:def 使用方法:def 函数名(参数1,参数2,参数-): ...

  6. 函数assert()详解

    函数assert()详解: 断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式.预处理器产生测试该断言的代码,如果断言不为真, ...

  7. php。defined,PHP defined()函数的使用图文详解

    PHP defined()函数的使用图文详解 PHP defined() 函数 例子 定义和用法 defined() 函数检查某常量是否存在. 若常量存在,则返回 true,否则返回 false. 语 ...

  8. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  9. python中的json函数_python中装饰器、内置函数、json的详解

    装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...

最新文章

  1. “完全自主”的木兰编程语言回应:承认基于Python二次开发,向中科院致歉
  2. margin 和 padding 的使用区别
  3. html5二次元插件,送你PS一键制作动漫二次元插件,80套背景+50种效果+20款中英字体...
  4. SAP UI5 jQuery.sap.formatMessage
  5. 2017-08-14 前端日报
  6. 太难了,一个接口超时问题,从应用排查到内核....
  7. php短路逻辑,JS利用短路原理简写if语句
  8. linux配置libpng环境变量_不同操作系统下 jdk 的配置
  9. 【旅行】1月17日镇江自驾游
  10. GMA Round 1 向量计算
  11. IK摆锤冲击试验装置能在什么场合使用?
  12. 牛顿插值法python代码_Python实现牛顿插值法(差商表)
  13. 《动态壁纸 : 手机壁纸大全》EULA条款协议
  14. 服务器不能用pe安装win7系统安装,使用PE安装win7系统失败了怎么办
  15. 360抢票服务器响应,抢票首日 360浏览器成最佳
  16. 动画效果编程基础详解--Animation Android
  17. Matlab如何调用外部函数/工具包,如何将新函数加到默认函数库中
  18. Ubuntu系统下有效的安装gcc/icc
  19. 国内计算机类学术期刊投稿指南
  20. 我的C语言矩阵库01

热门文章

  1. 数据总结(刀哥情绪数据)
  2. MySQL binlog日志恢复数据详细操作步骤
  3. 终身学习(LifeLong Learning)/ 增量学习(Incremental Learning)、在线学习(Online Learning)
  4. 备用域控服务器制作,怎么做备份域控服务器
  5. arm linux udev,关于交叉编译udev的问题。
  6. Android JNI的学习经历
  7. java按周获取时间
  8. iptable 详解_iptable命令详解1
  9. Android仿IOS AssistiveTouch(悬浮框的运用)
  10. Linux如何上线和下线CPU