模板(C++)

1.函数模板

1.1函数模板的概念

函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生

函数的特定类型版本。

1.2函数模板格式

注意!!!typename是定义模板类型的关键字,这里也可以将typename换成class作用是一样的,这里你可能想问,class不是类吗,不要问为什么,这就是规定,记住即可。

1.3函数模板的原理

函数模板并不是函数本身,它就像一个蓝图,使得编译器用使用方式产生特定具体类型函数的模具。所以,模板就是将原本需要我们重复去做的事交给了编译器。

1.4函数模板实例化

用不同类型的参数使用函数模板的时候,称为函数模板的实例化。模板实例化分为:隐式实例化和显式实例化。

1.4.1隐式实例化

让编译器根据实参的类型推导模板参数的类型。

例1:

例1 是add两个参数都是同类型 ,那如果说我要 add(a1,d1) 呢?一个为int,一个为double类型,这个模板还能使用吗?答案是:不行,详情请看例2。

例2:

方法2的显式实例化请往下看!!!

1.4.2显示实例化

在函数名后的<>中指定模板参数的实际类型

那还有个问题,我就想int a和 doulbe b进行相加,不想他们同一类型呢?请往下看!!!

1.4.3补充!,模板多种参数

需要多少个模板参数,自己加即可。

1.5模板参数匹配问题

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

个非模板函数。

2.对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而

不会从该模板产生出一个实例。如果模板可以产生一个具有更好匹配的函数, 那么将选择模

板。

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

2.类模板

2.1类模板的定义格式

2.2类模板的实例化

类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的

类型放在<>中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。

语录:一切都在往好的方向发展,继续努力吧!!!

今日分享完毕!!!谢谢大家的支持

相关推荐
AI的探索之旅10 分钟前
97 个 OpenCV 实例(三十七):二维码识别,一张图四个码的陷阱
c++·opencv·计算机视觉
熊猫钓鱼>_>24 分钟前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
Ai-_Man36 分钟前
Coze扣子还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·1024程序员节
UIU11444 分钟前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
raindayinrain1 小时前
c++设计模式
开发语言·c++·设计模式
旖旎夜光1 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
hiahiahia1231 小时前
Streaming Model Output
开发语言·前端
D e re k ZH1 小时前
保序回归:从 PAVA 到可并堆的单调约束优化
c++·算法·数据挖掘·回归·kotlin
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:字典树前缀树与单词检索统计
c++·python·算法·bfs·信息学竞赛
熊猫钓鱼>_>1 小时前
鸿蒙PC高分屏与键鼠交互适配:DPI缩放、右键菜单一次讲清
开发语言·笔记·华为·ai编程·harmonyos·鸿蒙·鸿蒙心迹