C++ 泛型编程篇(一) 模板初阶

目录

〇、为什么需要模板?

一、函数模板

1. 函数模板概念

2. 函数模板格式

3. 函数模板的原理 

4. 隐式实例化和显示实例化

5. 无法推导模板类型的情况

a.  只设置一个模板,但两个不同的参数类型使用模板

b. 函数体中使用了模板

6. 同名普通函数和模板函数的优先级问题 

二、类模板

1. 为什么?

2. 是什么?

3. 怎么用

4. 模板不支持分离编译

5. 模板也支持缺省参数


〇、为什么需要模板?

        如何实现一个所有类型可用的交换函数呢?函数重载的出现仅仅是解决了命名问题,但我们还是要为每种类型的变量都写一个同名函数,还是有点麻烦。能不能把参数的类型设置为一个变量?然后在使用函数时同时传入参数类型和实参,这样无论有多少种类型的参数,我们都只需要写一个这样的模板函数。


”把参数类型设置为变量“。基于这样的思想,c++引入了模板:将参数类型设置为变量,从而可以创建能够处理多种数据类型的代码。这也是泛型编程的一个关键特性,使得代码更加灵活和可重用。


泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。(通俗的说,泛型编程中泛型的意思就是适用于所有类型。)


一、函数模板

1. 函数模板概念

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

2. 函数模板格式

template<typename T1, typename T2,......,typename Tn>

返回值类型 函数名(参数列表){}

注意:typename是用来定义模板参数关键字也可以使用class(切记:不能使用struct代替class)函数模板就是用设置的模板替换了形参的具体类型。


eg. 甚至可以一个typename, class. 


 每一个使用模板的函数或类都必须在函数声明的上一行写上模板。

3. 函数模板的原理 

模板的原理是编译器会自动帮我们推导参数和生成函数。

注,模板和auto不同,auto不能用于形参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烛火萤辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值