目录

一:泛型编程

1.1:泛型编程的引出

1.2:函数模板的简单使用

二:模板技术的基本格式

(1)类模板

​编辑

(2)函数模板

三:函数模板的使用

3.1:自动推导类型

3.2:显示指定类型

3.3:模板函数局限

四:类模板的使用


一:泛型编程

1.1:泛型编程的引出

我们直接通过两段代码来看一下,为什么会出现泛型编程:

对于这两个函数来说,他们函数体实现的功能是完全相同的(交换两个参数的值),唯一的区别就在于他们的参数类型不同相同功能的代码因为参数类型的不同而被重复开发,这样就造成代码的冗余。

所以为了应对这样的情况,就出现了一种模板技术。

1.2:函数模板的简单使用

如果我们使用函数模板去实现这个功能,就不会出现因为参数类型原因,同类型代码重复开发的情况。

可以看到。我们使用同一个函数模板去操作交换两种不同类型的数据时,是完全可以实现的,这样就很好的避免的相同功能代码被重复开的的情况。

二:模板技术的基本格式

模板编程分为两类:

(1)类模板

 紧跟在template<class T>下面的是类,那么就被称为类模板 

(2)函数模板

 紧跟在template<typename   T>下面的是函数,那么就被称为函数模板 。

这里注意:  typename与class的作用是完全相同的。当然一个模板其实不只能有一个泛型,如果需要,还可以在<>中用逗号拼接符继续拼接。

三:函数模板的使用

3.1:自动推导类型

在使用函数模板时,像调用普通函数那样直接调用,不显示指定类型,编译器会自动根据参数的类型进行推导,从而确定泛型的类型。 

3.2:显示指定类型

在使用函数模板时,我们也可以指定泛型的类型,然后再传入参数,当然参数的类型需要和指定的类型一致。当我们指定的泛型的类型时,编译器就不会进行自动类型推导了。

3.3:模板函数局限

我们在使用普通函数交换int类型数据和char类型数据时,形参使用两个int类型数据接收是不会出问题的,因为编译器是会对char类型进行整形提升的(主要还是因为char也是属于整形家族的)。但是对于模板函数来说,是不能进行类型转换的。

当模板函数与普通函数发生重载时,如果参数匹配的话系统是会默认优先调用普通函数的,(因为不需要进行推导)。但如果我们指定要调用模板函数,那么在调用时,在函数名后加一个<>就可以了。

四:类模板的使用

在使用类模板实例化对象时,必须显示指定类型,不然无法实例化对象。

因为在实例化对象时,需要给对象分配空间,如果不指定类型,编译器不知道该分配多大的

空间给对象。

当然我在上面的教程中,使用的类型都是基本的类型便于理解,我们也可指定自定义的类型。

C++模板技术实现 泛型编程,通俗易懂的泛型编程教程//。相关推荐

  1. freemarker中运算符_如何在Web应用系统表示层开发中应用Velocity模板技术

    软件项目实训及课程设计指导--如何在Web应用系统表示层开发实现中应用Velocity模板技术 1.分离Web表示层的数据处理和展现逻辑的常见的应用技术 分离Web表示层的数据处理和展现逻辑是目前企业 ...

  2. php模板技术smarty,PHP模板技术Smarty

    基本信息 讲师: 高洛峰 时长:60分钟 集数:9 每集定价:20 元 描述: 如果你正在设计一个交互式的网站,你一定会关注两个主要的问题,就是界面美工和应用程序.在大多数的项目组中,开发一个Web程 ...

  3. SpringBoot下的模板技术Thymeleaf详解

    Thymeleaf是一个流行的模板引擎,该模板引擎采用Java语言开发. 模板引擎是一个技术名词,是跨领域跨平台的概念,在Java语言体系下有模板引擎,在C#.PHP语言体系下也有模板引擎,在Java ...

  4. 快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC、EntityFrameWork、T4模板技术。...

    快速开发框架,及库存管理系统,基于easyui框架和C#语言MVC.EntityFrameWork.T4模板技术. 产品界面如下图所示: 源码结构: 开放全部源码,如有需要请联系,QQ:1107141 ...

  5. python写word模板_Python3操作Office之Word模板技术

    在平时工作当中,经常会遇到大部分文字固定不变,小部分内容修改的相关文档.如放假通知.工作日志.工作周报.合同等. 以往都要打开,修改,保存,犹如机械一般的操作,如内容少还可勉强接受,倘若内容多时,反复 ...

  6. 【C++深度剖析教程40】使用数值型模板技术计算1+2+3+...+N的值

    上一篇文章学习了数值型模板技术,并利用相关技术,实现了C++的数组类模板.点击文章查看上一篇文章:点击链接查看 本篇文章,继续利用模板技术来解决一个问题. 如果想求1+2+3+-+N的结果,有很多种方 ...

  7. Smarty模板技术学习

    模板引擎技术:使得php代码和html代码分离的技术就称为"模板引擎技术" 自定义smarty模板技术实现 <?php//迷你smarty原理 class MiniSmart ...

  8. 智能指针:-和*运算符重载 + 模板技术 实现智能指针(C++)

    智能指针介绍 在C++中,我们都知道在堆区new 开辟的内存,必须通过delete 进行内存释放,不然会形成内存泄漏.有时候我们使用了new 后在 写了很多代码,忘记delete 也是很正常的.那么我 ...

  9. 修改了模板文件tpl如何立即生效_Python3操作Office之Word模板技术

    在平时工作当中,经常会遇到大部分文字固定不变,小部分内容修改的相关文档.如放假通知.工作日志.工作周报.合同等. 以往都要打开,修改,保存,犹如机械一般的操作,如内容少还可勉强接受,倘若内容多时,反复 ...

  10. 一个对前端模板技术的全面总结

    此文的写作耗时很长,称之为雄文不为过,小心慢用 此文缘由 其实从发布regularjs之后,我发现在google搜索regularjs 不是给我这个画面 <!-- more --> 就是给 ...

最新文章

  1. layer.js弹窗组件layer.prompt无法调用解决
  2. 软考自查:数据库设计
  3. SVN -客户端URL地址修改命令
  4. 如何发送Head请求
  5. 支付宝服务窗API接口开发php版本
  6. WebKit 内核源码分析 (四)
  7. leetcode--133. 克隆图
  8. BZOJ 1500 维修数列
  9. 插值法补齐缺失数据_数据处理——缺失值处理
  10. 增益和偏移的概念_高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO...
  11. Eclipse插件安装出现Duplicate location错误
  12. 宽带服务器盒信号灯红色闪烁,宽带出现光信号灯是红色是怎么回事
  13. 《信号与系统学习笔记》—信号与系统(四)
  14. 风尚云网学习-Linux/宝塔面板部署禅道开源系统
  15. 关于电脑突然没声音(Realtek High definition),电脑声卡驱动安装不上(已解决)
  16. 2021-06-02
  17. github添加设置ssh key
  18. oracle 按时间每五分钟分割,Oracle 5分钟或30分钟分割方法
  19. php设计网站课程报告,在线课程网站设计与实现-开题报告
  20. 快速消除PDF复制内容里的换行

热门文章

  1. 充电宝国产品牌推荐,国产充电宝排名
  2. 苹果手机自带表格软件_苹果手机还自带扫描仪,没想到今天才发现
  3. 解决Keil4与Keil5在同系统不能共存的问题
  4. t-SNE原理与推导
  5. 河南省第九届ACM程序设计大赛总结
  6. cdr添加节点快捷键_常用CDR快捷键
  7. 修改pdf文件的软件
  8. 总时差与自由时差的计算
  9. 迪普三层核心DPX8000a3实现爱快软路由上网
  10. 华为atn950b指导手册_全新原包装华为ATN950B 整机 传输设备