C++——模板

模板

这两段分别是int类型和double类型的swap函数的实现

但是比较繁琐,所以就有了泛型编程--模板

模板有两种,一种叫函数模板,一种叫类模板

这个是模板的例子这里的template和class是关键字,T叫做模板参数可以用其他字符代替

模板的特质

每个类型的交换函数本来是要用户写的,但是使用模板时用户就只能写一份,其他的让编译器写,也就是说模板并没有减少工作量而是转移了工作

这两个函数就是模板最后实例化出的代码

这里除了有class关键字还有typename关键字,两者都可

也可以定义多个模板参数

并且C++函数库里面也存在swap函数,不需要自己写

模板实例化的小问题

这段代码是不能通过的,编译器实例化时出现了歧义,使用a1时T被当作了int使用d1时T被当作了double

办法就是强转

又或者加一个模板参数,显式实例化,不用系统去推导数据类型了

当函数和对应的模板同时存在时,编译器会优先调用第一个,因为调用模板还需要进行实例化,相比直接调用成本更高

类模板

使用typedef可以解决一个类存储各种类型的数据的问题

但是不能让一个类同时存储两种类型的数据

但定义这样的一个类模板就可以解决问题

而且类模板只能显式实例化

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值