模版算是C++的独有特性吧,也算是C++中比较难的地方,我平时开发的时候用的非常少,或者几乎没有用到,需要模版的地方是能看懂框架中相关的代码;

模版函数相对还是很简单的,引入模版的目的在于代码的重用;比如算法相似,但是由于数据类型不同,我们不得不把同样的一份代码拷贝两次,而仅仅是为了修改数据类型,那么在引入了函数模版之后,我们可以仅仅用一份代码而表示不同重载函数。

下面介绍一下最简单的函数模版的应用:

template <typename T>  //定义一个抽象的数据类型T

T myMax(T a, T b) {    //声明函数模板

  return a > b ? a : b;

}

int main () {

  int  a = 2;

  int b = 3;

  std::cout<<myMax(a, b)<<std::endl;  //动态生成函数 int myMax(int , int)

  float c = 2.0f;

  float d = 3.0f;

  std::cout<<myMax(c, d)<<std::endl;  //动态生成函数 flota myMax(float, float)

}

代码在第一次调用myMax()函数时,其参数都是int型,则编译器推导模板参数T为int,编译器会以函数模板为样板,以实际类型int代替函数模板中的抽象类型T,自动为这个函数调用生成一个int类型的版本。

C++函数模版的简单使用的更多相关文章

  1. c++ 类模版、成员函数模版、函数模版 用法

    C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...

  2. C++ Template之函数模版

    函数模版的定义: template <typename T> T const& max(const T& a,const T b) { return a > b ? ...

  3. JDBC中DAO事务函数模版

    DAO事物函数模版1: public void OrderFinsByPage(){ Connection conn = null; PreparedStatement pstmt = null; R ...

  4. C++编译器函数模版机制剖析 - 函数模版的本质

    思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...

  5. MGTemplateEngine 模版引擎简单使用(转)

    原文:http://blog.csdn.net/crazy_srufboy/article/details/21748995 要实现的效果 首先上图中间的 标题至内容 都是使用UIWebView显示, ...

  6. hdu 1286 找新朋友 欧拉函数模版题

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem Des ...

  7. Python_selenium中类函数模块的简单介绍

    Python_selenium中类函数模块的简单介绍 一.demo1.py的代码如下所示 #coding:utf-8 class ClassA(object): string = "这是一个 ...

  8. C++函数模版实现

    若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,那么就可以把这个程序改写成为模版,模版可以让程序对任何其他数据类型进行同样方式的处理. 本节主要是说一下C++的函数模版 ...

  9. C++中函数模版和普通函数的区别

    函数模版和同名普通函数在同一个作用域中,会优先调用那个函数? 函数模型在进行调用的时候会进行严格的类型匹配,而普通函数在调用的时候,会进行函数参数类型转换(前提是自动类型转换). 调用函数模版,本质是 ...

随机推荐

  1. haproxy配置基于ssl证书的https负载均衡

    本实验全部在haproxy1.5.19版本进行测试通过,经过测试1.7.X及haproxy1.3版本以下haproxy配置参数可能不适用,需要注意版本号. 一.业务要求现在根据业务的实际需要,有以下几 ...

  2. 转载:2.2.4 配置项的单位《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19629.html 大部分模块遵循一些通用的规定,如指定空间大小时不用每次都定义到字节.指定时间时不用精确到毫秒. 当指定空间大小时, ...

  3. 关于Newtonsoft.Json,反序列化jason,内容有key的转换

    Newtonsoft.Json,反序列化,对于result里面的结果,可以使用Dictionary<string, List<类名>>,string是key值,value又是一 ...

  4. python 全栈开发,Day66(web应用,http协议简介,web框架)

    一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...

  5. ORACLE 锁表处理,解锁释放session

    后台数据库操作某一个表时发现一直出于假死状态,可能是该表被某一用户锁定,或者后台数据库操作某一个表时发现一直出于"假死"状态,可能是该表被某一用户锁定,导致其他用户无法继续操作 - ...

  6. TOP排行新闻列表。

    效果图: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  7. 《剑指offer》-找到字符串中第一个只出现一个的字符

    题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g".当从该字符流中读出 ...

  8. 《剑指offer》-连续子数组的最大和

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  9. 实现数据导出为.csv表格

    数据导出实现步骤: 1.查找出要导出的数据,整理为二维数组. 2.定义导出表格的字段 3.将整理的二维数组按导出表格定义的字段重新整理. 4.将整理的二维数组写入服务器中已有的一个.csv文件. 5. ...

  10. kafka 数据存储结构+原理+基本操作命令

    数据存储结构: Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的.每个topic又可以分成几个不同的partition(每个topic有几个partitio ...