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

C++(模板)

一、函数

前言

模板使C++中的一种泛型编程语法,允许用户在编写函数或者编写类的的时候使用,使用户编写的数据类型不固定,会在入参时,根据数据类型自动改变。

1、函数模板

就是编写函数时使用的模板,可以用 T 代替函数形参列表的任意数据类型,使数据类型不定。

1)函数模板的语法

template <typename T1,typename T2,....,typename Tn> // 想要有几个不一样的不确定的数据类型,就写几个
函数返回值 函数名(由T代替数据类型的形参列表){函数定义
}注意:函数模板中,T 只能是一种类型,没有提升匹配,不会通过数据类型的兼容性 或 隐式转换,转换成其他匹配的类型

2)函数模板的使用

当调用 func() 函数的时候,T 会更具入参,自动变化

当实参与形参不完全匹配时会报错,不会进行提升匹配
(这个问题很好解决,这里只是展示不能提升匹配)

3)关于函数模板的潜规则

由于 T 可以代替所有数据类型,自然包括多级指针,多级地址,如果都由 T 来代替,会无法区分

因此 T 不允许表示任意类型的指针,指针标识符必须写在 T 外面,如:T*、T**、T*** ······

4)函数模板全特化的语法

template <typename T1,typename T2,....,typename Tn>
函数返回值 函数名(由T代替数据类型的形参列表){函数定义
}
//在以上函数模板的基础上,进行以下特化
template <>
返回值类型 函数名<特化类型1,特化类型2,...,特化类型n>(特化类型行参列表){函数定义
}

5)函数模板全特化的使用 

        当我们由特殊需求,一个函数模板里的逻辑代码不能满足时,可以专门为这个特殊的属性类型写一个全特化的函数模板

 函数模板练习:

1:请使用函数模板,写一个能够针对所有数据类型的数据的快速排序函数,并多写几个数组做测试


 ​​​​​2、

http://www.dtcms.com/a/308380.html

相关文章:

  • java笔记——ConcurrentLinkedQueue
  • AUTOSAR进阶图解==>AUTOSAR_SRS_FunctionInhibitionManager
  • axios封装对比
  • 记录自己使用gitee和jenkins
  • PHP反序列化学习+解析+复现
  • 提升Windows操作效率:三款实用辅助工具功能解析​
  • 代码随想录Day35:动态规划(背包问题 二维 一维、分割等和子集)
  • Spring Boot整合MyBatis-Plus全攻略
  • 如何监控项目的每个阶段,提高执行效率
  • SchemaCrawler:一款免费开源的数据库文档工具
  • 斐波那契数
  • AI学习笔记三十三:基于Opencv的单目标跟踪
  • OpenCSG月度更新2025.7
  • leecode18 四数之和
  • 个股期权合约期内遇到标的停牌,如何处置?
  • DoRA详解:从LoRA到权重分解的进化
  • Redis线程模型讨论
  • 修改VSCode远程SSH的PATH
  • JVM字节码文件结构剖析
  • JVM学习日记(十二)Day12
  • 解释 MySQL 中的 EXPLAIN 命令的作用和使用场景
  • 格雷希尔G25F系列电气端口快速封堵接头,解决电池包、电机控制器等壳体的气密性测试难题,提升效率与可靠性,助力新能源汽车生产。
  • ARM--中断
  • 三坐标测量仪攻克深孔检测!破解新能源汽车阀体阀孔测量难题
  • 雷霆战机游戏代码
  • ABS系统专用磁阻式汽车轮速传感器
  • 建设公司如何优化梳理部门职责,提高运作效率?
  • 中烟创新自研【烟草行政许可文书制作系统】纳入“北京市人工智能赋能行业发展典型案例集”
  • 电子电气架构 --- 车载48V系统
  • 如何导入json文件到数据库