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

本文详细介绍了C++中的函数模板和类模板,包括它们的概念、格式、原理、实例化方法以及在遇到不同类型参数和优先级问题时的处理策略。还讨论了泛型编程的运用和模板不支持分离编译的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

〇、为什么需要模板?

一、函数模板

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、付费专栏及课程。

余额充值