56)函数模板的基本语法
1)问题引入-->为啥有函数模板
---->首先是,我们编写一个 交换两个数的C语言代码:
1 #include<iostream> 2 3 using namespace std; 4 //加入这两个数是整数 5 void jiaohuan(int a,int b) 6 { 7 a=a+b; 8 b=a-b; 9 a=a-b; 10 } 11 12 //要是两个数double型的 13 void jiaohuan(double a,double b) 14 { 15 a=a+b; 16 b=a-b; 17 a=a-b; 18 } 19 20 int main() 21 { 22 23 24 return 0; 25 }
看,我同样是交换两个数,根据不同的数据类型,可能写很多不同类型的函数,那么就增加了维护成本,因为,你每编写一个函数,就得需要维护,
那么 怎么解决这个问题?
就用模板技术--->模板是啥,就是类型参数化,编写代码可以忽略类型,用一个标志或者符号
为了让编译器区分是 普通函数还是模板函数 所以 得告诉编译器----->我要编写模板函数了,所以就有了一个关键子--->template
编写模板函数的步骤:
1)写上关键子 template
2)因为,你的函数不同的类型 你得用一个自己的名字代替 那么就有了
template <class 你起的变量的名字> 或者 template <typename 你起的变量的名字> ----->这个就是告诉编译器 我下面要写模板函数了,所以啊,你要是遇到奇怪的东西 不要报错。
3)然后写我的模板函数了:
1 //下面是模板函数 2 template <class wangchao> 3 void hh(wangchao &a,wangchao &b) 4 { 5 a=a+b; 6 b=a-b; 7 a=a-b; 8 } 9 int main() 10 { 11 12 int a=3; 13 int b=4; 14 hh(a,b); 15 cout<<a<<endl; 16 cout<<b<<endl; 17 return 0; 18 }
注意:
1)template <class t1,class t2.class t3~~~~~~~~~~~~~~~> 这个尖括号里面可以写很多个,并不是只有一个的
2)templata仅仅对它下面的第一个函数有作用,第二个就不起作用了,所以 你还得重新定义你的template<class tt>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上面的模板方法在main中能运行,怎么判断的变量类型:
1)上面的 hh(a,b) 是编译器自动推导的,根据你调用模板方法时传的参数类型,去替换掉你编写模板方法时 写的那个自己的变量类型wangchao
2)可以显式指定类型----> hh<int>(a,b) 就是告诉编译器,我的传的值是int的
转载于:https://www.cnblogs.com/xiaoyoucai/p/8279646.html
56)函数模板的基本语法相关推荐
- C++ 函数模板 使用模板数组排序
1.模板的特点 模板不可以直接使用, 它是一个框架 模板的通用并不是万能的 2.函数模板 2.1 语法 template<typename T> 函数的声明与定义 template --声 ...
- C++模板:模板简述,函数模板详细说明【C++模板】(56)
模板 模板语义 函数模板 重载泛化 函数模板 语法 模板泛化 特性小结 编译原理 函数模板应用 算法抽象 快速排序算法实现模板化 函数模板默认参数 函数模板的特化 函数模板适用场景 模板 模板语义 模 ...
- C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)
C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...
- 模板 (函数模板语法 ,类模板与函数模板的区别,:函数模板案例,普通函数与函数模板的区别,普通函数与函数模板调用规则,模板的局限性,类模板分文件编写.cpp,Person.hpp,类模板与友元)
**01:函数模板语法: #include<iostream> using namespace std;//交换两个整型函数 void swapInt(int &a ,int &a ...
- [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断
参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...
- C++函数模板5分钟入门
参考自:http://c.biancheng.net/view/2317.html 在<C++函数重载>一节中,为了交换不同类型的变量的值,我们通过函数重载定义了四个名字相同.参数列表不同 ...
- 函数模板和类模板的使用
函数模板 //交换 int 变量的值 void Swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } //交换 float 变量的值 v ...
- C++函数模板与类模板的区别
类模板: C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中.类模板的目的同样 ...
- 笔记②:牛客校招冲刺集训营---C++工程师(面向对象(友元、运算符重载、继承、多态) -- 内存管理 -- 名称空间、模板(类模板/函数模板) -- STL)
0618 C++工程师 第5章 高频考点与真题精讲 5.1 指针 & 5.2 函数 5.3 面向对象(和5.4.5.5共三次直播课) 5.3.1 - 5.3.11 5.3.12-14 友元 友 ...
- C++ 函数模板和排序的函数模板——学习笔记
我们在使用重载函数时,只是使用了函数名,而函数体还是得分别定义,在C++中函数模板为我们很好的解决了这个问题. 1.函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函 ...
最新文章
- [译稿]同步复制提议 2010-09
- 我爸和在我们小区里的一位老大爷
- C++:录入班级数学成绩,计算最大值、平均值、不及格人数
- m2eclipse插件
- 重学java基础第二十二课:IDEA安装
- 打开 igv java_必备可视化Integrative Genomic Viewer(IGV)
- 中国数据中心加速卡市场趋势报告、技术动态创新及市场预测
- 模板模式(Template Pattern)
- Django REST framework+Vue 打造生鲜超市(九)
- 计算机网络布线开题报告,网络综合布线开题报告.docx
- 通俗易懂的理解BiLSTM-CRF模型中的CRF层
- dos攻击防范 php,DOS攻击和DDOS攻击的区别
- 如何翻转视频,一键将多个视频垂直翻转播放
- C语言:下载并安装编译器(MinGW-W64 GCC)win10环境
- 淘宝电商创业可能会面临哪些问题?
- PS|渐变及海报制作
- 计算机外存是ram硬盘还是,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
- 在html循环字母,怎么样能遍历一个字符串
- 灵机一动-趣味问题种种
- 图形验证码-图片无法加载
热门文章
- hMailServer之发送附件大小限制
- window.location.href的使用方法
- mysql jdbc 驱动 下载地址官网
- 子DIV块中设置margin-top时影响父DIV块位置的解决办法
- imu相机标定_【光电视界】多传感器融合标定方法汇总
- asyncio 文件io高并发_请问这个 asyncio 异步访问页面怎么写可以更加快?
- springboot mybatis 事务_真香——Github上的优秀SpringBoot框架
- python输出间隔_在python中生成间隔之间的月份列表
- php 可用内存大小,关于php:致命错误:允许的内存大小为67108864字节耗尽
- python是否存在键_检查给定的键在Python的字典中是否已经存在