C++泛型编程与模板

目录

一.泛型编程

二.函数模板

2.1 函数模板格式

2.2 函数模板的原理

2.3 函数模板的实例化

2.4 模板参数的匹配原则

一篇博客关于临时变量、引用参数和const

三.类模板

3.1 类模板的定义格式

3.2 类模板的实例化


一.泛型编程

使用同一个函数处理不同参数类型时,我们可以使用函数重载来实现这个功能。

函数重载给了我们很大的便利,但是函数重载可能也会出现不好之处:

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

既然函数重载有一些缺点,那么有没有办法来改正呢,前辈们肯定是解决了这个问题了,此时就有了泛型编程

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

二.函数模板

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

2.1 函数模板格式

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

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

template<typename T>
T Add(T s1, T s2)
{
	return s1 + s2;
}

注意:typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class

2.2 函数模板的原理

模板是一个蓝图,记住它本身并不是函数,是编译器使用这个模板来产生具体类型函数的。模板就是将本应该由我们做的重复的事情给了编译器

在编译阶段,编译器会根据传入的实参类型来推演出对应类型的函数以供调用。

例如:

template<typename T>
void Swap(T& 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值