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

04--模板初阶(了解)

模板引入:CPP库里自带了swap模板。以后不用自己去写swap函数了。-> 开启了泛型编程的时代.

1. 模板概念

模板: 与类型无关的通用代码,用于代码的复用。

分类:分为 函数模板类模板

模板 和 typedef 的区别???

typedef的缺陷在于不能灵活处理多种类型的替换, 模板的参数类型是自动推导的, 而 typedef 具有不可控制的缺陷.

2. 函数模板概念

语法格式:

3. 函数模板的实例化

编译通过推到类型,用函数模板,生成对应的函数,这个过程叫做模板实例化。分为隐式实例化显示实例化两种。

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

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

注意: typename 也可以用 class 关键字.

4. 模板参数的匹配原则

  1. 一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数。

  1. 对于非模板函数和同名函数模板,如果其他条件都相同,在调用时会优先调用非模板函数而不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数,那么将选择模板。

  2. 模板函数不允许自动类型转换,但普通函数可以进行自动类型转换

5. 类模板概念

template<class T1, class T2, ..., class Tn>
class 类模板名
{// 类内函数定义 
};

6. 类模板的实例化

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

7. 模板的意义

模板带领语言发展走上了一条快车道,开启了泛型编程的新时代。

8. 模板的注意事项

  1. 模板的类名和类型可能会不一致。比如说class A类,类名是A,但是我们在定义的时候需要写为A<int> a,这时候类型是A<int>.
  2. 模板类,声明与定义要尽量放在同一个文件中。因为如果要分离的话,需要给函数定义部分也要加上模板的声明才能编过。并且强烈不建议这样做。

  3. 类模板声明与定义分离不能在两个文件中。也不是完全不能,原因见模板进阶。
http://www.dtcms.com/a/321780.html

相关文章:

  • 【Linux】从零开始:RPM 打包全流程实战万字指南(含目录结构、spec 编写、分步调试)
  • 【探展WAIC】从“眼见为虚”到“AI识真”:如何用大模型筑造多模态鉴伪盾牌
  • 惯量时间常数 H 与转动惯量 J 的关系解析
  • uniapp开发微信小程序遇到富文本内容大小变形问题v-html
  • 【谷歌 SEO】排查页面未索引问题:原因与解决方案
  • 页面tkinter
  • CALL与 RET指令及C#抽象函数和虚函数执行过程解析
  • 锂电池保护板测试仪:守护电池安全的核心工具|深圳鑫达能
  • 深度学习里一些常用的指标(备份)
  • 常见数据结构介绍(顺序表,单链表,双链表,单向循环链表,双向循环链表、内核链表、栈、队列、二叉树)
  • 浅析线程池工具类Executors
  • 客户端攻击防御:详解现代浏览器安全措施
  • Python字典高阶操作:高效提取子集的技术与工程实践
  • Socket编程预习
  • js 实现洋葱模型、洋葱反向模型
  • 关于 Rust 异步(无栈协程)的相关疑问
  • Prometheus 监控平台部署与应用
  • 新版速递|ColchisFM突破传统建模局限,用地质统计学模拟构建更真实的地震正演模型
  • 1635. 预算够吗
  • linux运维命令查看cpu、内存、磁盘使用情况
  • FFmpeg 编译安装和静态安装
  • 12、GPIO介绍
  • Redis7集群搭建与原理分析
  • element plus table 表格操作列根据按钮数量自适应宽度
  • 从引导加载程序到sysfs:Linux设备树的完整解析与驱动绑定机制
  • 您与此网站之间建立的连接不安全
  • 智慧园区漏检率↓82%:陌讯多模态融合算法实战解析
  • 防御保护09
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • 手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析