当前位置: 首页 > news >正文

【C++】什么是模板?

有不懂的地方可以翻阅我之前文章!

                             个人主页:CSDN_小八哥向前冲

                              所属专栏:CSDN_C++入门


目录

模板函数

泛型编程

函数模板

类模板


模板函数

泛型编程

在之前的学习里,我们知道函数可以重载当我们在实现多参数函数交换时,我们可以这样写:

但是这样写,有很多弊端。如:

  1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增 加对应的函数。
  2. 代码的可维护性比较低,一个出错可能所有的重载均出错

那能不能告诉编译器一个模子,让编译器根据你提供的类型来生成相对应的代码呢?

如:

像这样,如果C++中也有这样的一个模具,那我们的代码可以省很多事!

这里一个新的概念:

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

现在我们具体重点介绍一下函数模板和类模板

函数模板

用不同类型的参数使用函数模板时,称为函数模板的实例化。

模板参数实例化分为:隐式实例化和显式实例化。

隐式实例化:让编译器根据实参推演模板参数的实际类型。

如:

显示实例化:在函数名后的<>中指定模板参数的实际类型

模板参数的匹配原则

如果非模板函数非常契合,那么就会调用非模板函数而不会调用模板去实例化。

类模板

类模板的定义格式

例如:一个栈类

注意:类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。

我们下期见!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第二证券:虚拟现实概念强势,博士眼镜三连板,星星科技涨停
  • spring mvc工作流程
  • 小试牛刀-区块链Solana多签账户
  • 血缘系统 datahub + Sqllineage
  • 修改docker的/var/lib/docker/overlay2储存路径
  • mac 链接数据库报错 - Public Key Retrieval is not allowed
  • 通过xshell使用密钥连接阿里云服务器
  • IF>22| 一文解析宏基因Catalog怎么做
  • 预处理指令简介
  • Mapreduce_csv_averageCSV文件计算平均值
  • 白盒测试-发送请求
  • 前端面试题整理-浏览器
  • 云开发微信小程序--即时聊天(单人聊天,多人聊天室)
  • 【走迷宫】
  • (回溯) LeetCode 77. 组合
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • [数据结构]链表的实现在PHP中
  • Android组件 - 收藏集 - 掘金
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • ES6系统学习----从Apollo Client看解构赋值
  • JavaScript服务器推送技术之 WebSocket
  • k8s如何管理Pod
  • Laravel核心解读--Facades
  • Promise面试题2实现异步串行执行
  • web标准化(下)
  • 对象管理器(defineProperty)学习笔记
  • 基于web的全景—— Pannellum小试
  • 盘点那些不知名却常用的 Git 操作
  • 前端攻城师
  • 如何设计一个微型分布式架构?
  • 如何选择开源的机器学习框架?
  • 首页查询功能的一次实现过程
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我的zsh配置, 2019最新方案
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 中文输入法与React文本输入框的问题与解决方案
  • 转载:[译] 内容加速黑科技趣谈
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #ifdef 的技巧用法
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (06)Hive——正则表达式
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (八)Flask之app.route装饰器函数的参数
  • (二)springcloud实战之config配置中心
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (六)vue-router+UI组件库
  • (推荐)叮当——中文语音对话机器人
  • (转)清华学霸演讲稿:永远不要说你已经尽力了