【C++】什么是模板?

有不懂的地方可以翻阅我之前文章!

                             个人主页CSDN_小八哥向前冲

                              所属专栏CSDN_C++入门


目录

模板函数

泛型编程

函数模板

类模板


模板函数

泛型编程

在之前的学习里,我们知道函数可以重载当我们在实现多参数函数交换时,我们可以这样写:

但是这样写,有很多弊端。如:

  1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增 加对应的函数。
  2. 代码的可维护性比较低,一个出错可能所有的重载均出错

那能不能告诉编译器一个模子,让编译器根据你提供的类型来生成相对应的代码呢?

如:

像这样,如果C++中也有这样的一个模具,那我们的代码可以省很多事!

这里一个新的概念:

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

现在我们具体重点介绍一下函数模板和类模板

函数模板

用不同类型的参数使用函数模板时,称为函数模板的实例化。

模板参数实例化分为:隐式实例化和显式实例化。

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

如:

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

模板参数的匹配原则

如果非模板函数非常契合,那么就会调用非模板函数而不会调用模板去实例化。

类模板

类模板的定义格式

例如:一个栈类

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

我们下期见!

评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值