博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数模板
阅读量:5162 次
发布时间:2019-06-13

本文共 995 字,大约阅读时间需要 3 分钟。

1.什么是函数模板?

在创建完成抽象操作的函数时,如:拷贝,反转和排序,你必须定义多个版本以便能处理每一种数据类型。以 max() 函数为例,它返回两个参数中的较大者:double max(double first, double second);
complex max(complex first, complex second);
date max(date first, date second);
//..该函数的其它版本
尽管这个函数针对不同的数据类型其实现都是一样的,但程序员必须为每一种数据类型定义一个单独的版本:
double max(double first, double second)
{
return first>second? first : second;
}
complex max(complex first, complex second)
{
return first>second? first : second;
}
date max(date first, date second)
{
return first>second? first : second;
}
这样不但重复劳动,容易出错,而且还带来很大的维护和调试工作量。更糟的是,即使你在程序中不使用某个版本,其代码仍然增加可执行文件的大小,大多数编译器将不会从可执行文件中删除未引用的函数。
用普通函数来实现抽象操作会迫使你定义多个函数实例,从而招致不小的维护工作和调试开销。解决办法是使用函数模板代替普通函数。
2.
定义?
定义的一般形式: template 
函数返回值类型 函数名(参数表){ 函数体 } 例如: templat
T1 fun(T1 a,T2 b){ T2=d; 、、、、、、 } 如果主调函数中有: int x; double y;fun(x,y);则系统将用实参x的数据类型int和y的数据类型double的代替函数模板中的T1和T2,生成模板函数 int fun(int a,double b) { double d; 、、、、 } 书上例子:
 

转载于:https://www.cnblogs.com/itloverhpu/p/3221043.html

你可能感兴趣的文章
字符串匹配KMP算法详解
查看>>
单词查找排序输出
查看>>
TCP三次握手和四次挥手及用户访问网页流程
查看>>
echo常用操作
查看>>
算法笔记
查看>>
LeetCode 237. Delete Node in a Linked List 删除链表结点(只给定要删除的结点) C++/Java...
查看>>
LCA倍增模板
查看>>
EMS-Demo 雇员管理系统演示
查看>>
软件工程第二次作业——心得体会(结对编程)
查看>>
ORA-12560: TNS: 协议适配器错误 ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
读书印记 - 《菊与刀》
查看>>
第一个小demo: spring boot + mybatis + thymeleaf
查看>>
mysql获取字段信息
查看>>
Tomcat 网站部署(三)
查看>>
JS实现全选与取消 Jquery判断checkbox是否被选中
查看>>
如果重新设计网络,有没有可能合并IP地址跟MAC地址?
查看>>
德州扑克总纲
查看>>
linux下password的用法
查看>>
[poj1986]Distance Queries(LCA)
查看>>
BPM配置故事之案例11-操作外部数据源
查看>>