C++函数模版的简单使用
模版算是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++函数模版的简单使用的更多相关文章
- c++ 类模版、成员函数模版、函数模版 用法
C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...
- C++ Template之函数模版
函数模版的定义: template <typename T> T const& max(const T& a,const T b) { return a > b ? ...
- JDBC中DAO事务函数模版
DAO事物函数模版1: public void OrderFinsByPage(){ Connection conn = null; PreparedStatement pstmt = null; R ...
- C++编译器函数模版机制剖析 - 函数模版的本质
思考:为什么函数模板能够和函数重载放在一块.C++编译器是怎样提供函数模板机制的? demo 1 #include <cstdio> #include <iostream> u ...
- MGTemplateEngine 模版引擎简单使用(转)
原文:http://blog.csdn.net/crazy_srufboy/article/details/21748995 要实现的效果 首先上图中间的 标题至内容 都是使用UIWebView显示, ...
- hdu 1286 找新朋友 欧拉函数模版题
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Des ...
- Python_selenium中类函数模块的简单介绍
Python_selenium中类函数模块的简单介绍 一.demo1.py的代码如下所示 #coding:utf-8 class ClassA(object): string = "这是一个 ...
- C++函数模版实现
若一个程序的功能是对某种特定的数据类型进行处理,则将所处理的数据类型说明为参数,那么就可以把这个程序改写成为模版,模版可以让程序对任何其他数据类型进行同样方式的处理. 本节主要是说一下C++的函数模版 ...
- C++中函数模版和普通函数的区别
函数模版和同名普通函数在同一个作用域中,会优先调用那个函数? 函数模型在进行调用的时候会进行严格的类型匹配,而普通函数在调用的时候,会进行函数参数类型转换(前提是自动类型转换). 调用函数模版,本质是 ...
随机推荐
- @PathVariable和@RequestParam
@PathVariable 当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariabl ...
- PYTHON-操作系统基础
预习:操作系统基础1,编程语言的分类2,多版本共存3,执行python程序的两种方式4,变量5,输入输出6,运算符7,基本数据类型8,流程控制之if ------------------------- ...
- 测试开发之前端——No5.HTML5中的表单事件
表单事件 由 HTML 表单内部的动作触发的事件. 适用于所有 HTML 5 元素,不过最常用于表单元素中: 属性 值 描述 onblur script 当元素失去焦点时运行脚本 onchange s ...
- mysql的undo log和redo log
在数据库系统中,既有存放数据的文件,也有存放日志的文件.日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件. MySQL中的日志文件,有这么两 ...
- 【python】中文提取,判断,分词
参考: http://www.cnblogs.com/kaituorensheng/p/3595879.html https://github.com/fxsjy/jieba 判断是否包含中文 def ...
- PHP数学常用函数
PHP数学常用函数 函数名 描述 实例 abs() 求绝对值 $abs = abs(-4.2); //4.2 fmod() 浮点数取余 $x = 5.7;$y = 1.3;$r = fmod($x, ...
- 步步为营-68-asp.net简单练习(get set)
1 加法计算器 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- each()遍历
在<jQuery教程/理解选取更新范围>一节中,我们知道:当选择器返回了多个元素时,可以使用一个方法来更新所有的元素,不再需要使用循环. 然后有的时候需要遍历元素,怎么办? 使用each( ...
- Promise in Chakra
http://www.ecma-international.org/ecma-262/#sec-fulfillpromise 25.4.1.3.1 and 25.4.1.3.2 Promise Rej ...
- 【Algorithm | 链表】单链表“环”、“环的起点”、“环的长度”问题
参考资料 • Floyd判圈算法 { 链接 } • 单链表“环”.“环的起点”.环的长度”问题 { 链接 } 链表环的问题 一.判断链表有换 使用两个指针slow和fast.两个指针开始时均在头节点处 ...