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)函数模板的基本语法相关推荐

  1. C++ 函数模板 使用模板数组排序

    1.模板的特点 模板不可以直接使用, 它是一个框架 模板的通用并不是万能的 2.函数模板 2.1 语法 template<typename T> 函数的声明与定义 template --声 ...

  2. C++模板:模板简述,函数模板详细说明【C++模板】(56)

    模板 模板语义 函数模板 重载泛化 函数模板 语法 模板泛化 特性小结 编译原理 函数模板应用 算法抽象 快速排序算法实现模板化 函数模板默认参数 函数模板的特化 函数模板适用场景 模板 模板语义 模 ...

  3. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  4. 模板 (函数模板语法 ,类模板与函数模板的区别,:函数模板案例,普通函数与函数模板的区别,普通函数与函数模板调用规则,模板的局限性,类模板分文件编写.cpp,Person.hpp,类模板与友元)

    **01:函数模板语法: #include<iostream> using namespace std;//交换两个整型函数 void swapInt(int &a ,int &a ...

  5. [c++][语言语法]函数模板和模板函数 及参数类型的运行时判断

    参考:http://blog.csdn.net/beyondhaven/article/details/4204345 参考:http://blog.csdn.net/joeblackzqq/arti ...

  6. C++函数模板5分钟入门

    参考自:http://c.biancheng.net/view/2317.html 在<C++函数重载>一节中,为了交换不同类型的变量的值,我们通过函数重载定义了四个名字相同.参数列表不同 ...

  7. 函数模板和类模板的使用

    函数模板 //交换 int 变量的值 void Swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } //交换 float 变量的值 v ...

  8. C++函数模板与类模板的区别

    类模板: C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中.类模板的目的同样 ...

  9. 笔记②:牛客校招冲刺集训营---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 友元 友 ...

  10. C++ 函数模板和排序的函数模板——学习笔记

    我们在使用重载函数时,只是使用了函数名,而函数体还是得分别定义,在C++中函数模板为我们很好的解决了这个问题. 1.函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函 ...

最新文章

  1. [译稿]同步复制提议 2010-09
  2. 我爸和在我们小区里的一位老大爷
  3. C++:录入班级数学成绩,计算最大值、平均值、不及格人数
  4. m2eclipse插件
  5. 重学java基础第二十二课:IDEA安装
  6. 打开 igv java_必备可视化Integrative Genomic Viewer(IGV)
  7. 中国数据中心加速卡市场趋势报告、技术动态创新及市场预测
  8. 模板模式(Template Pattern)
  9. Django REST framework+Vue 打造生鲜超市(九)
  10. 计算机网络布线开题报告,网络综合布线开题报告.docx
  11. 通俗易懂的理解BiLSTM-CRF模型中的CRF层
  12. dos攻击防范 php,DOS攻击和DDOS攻击的区别
  13. 如何翻转视频,一键将多个视频垂直翻转播放
  14. C语言:下载并安装编译器(MinGW-W64 GCC)win10环境
  15. 淘宝电商创业可能会面临哪些问题?
  16. PS|渐变及海报制作
  17. 计算机外存是ram硬盘还是,都是存储器,但RAM、ROM、闪存、硬盘怎么分?
  18. 在html循环字母,怎么样能遍历一个字符串
  19. 灵机一动-趣味问题种种
  20. 图形验证码-图片无法加载

热门文章

  1. hMailServer之发送附件大小限制
  2. window.location.href的使用方法
  3. mysql jdbc 驱动 下载地址官网
  4. 子DIV块中设置margin-top时影响父DIV块位置的解决办法
  5. imu相机标定_【光电视界】多传感器融合标定方法汇总
  6. asyncio 文件io高并发_请问这个 asyncio 异步访问页面怎么写可以更加快?
  7. springboot mybatis 事务_真香——Github上的优秀SpringBoot框架
  8. python输出间隔_在python中生成间隔之间的月份列表
  9. php 可用内存大小,关于php:致命错误:允许的内存大小为67108864字节耗尽
  10. python是否存在键_检查给定的键在Python的字典中是否已经存在