C++template之类模版进一步了解

目录

一、类模板实例化

        1.非类型模版参数

2.函数模板的特化 

3.类模板特化

3.1全特化

3.2偏特化

3.2.1部分特化

3.2.2对参数进一步限制

二、注意事项

        1.类模板的定义和声明要在同一个文件,不然容易出错


前言:这一篇是在我的上一篇文章的基础上,再进一步所写的。

链接:C++Template<>模版的介绍及深度解析-CSDN博客

一、类模板实例化

        1.非类型模版参数

类型模版参数:就是跟在 class后面或者typename后的类型

非类型模版参数:用一个常量作为作为类(函数)模板的一个参数,在类中可以当作常量来用

2.函数模板的特化 

有时候我们使用类模板不一定能解决我们的需求,因此我们需要单独写一份来实现。

比如下面的代码:

我们想要比较1和2的大小,模版可以完成。

但是当我们传过去变量的地址去比较,这样就不对了。我们想要比较的是值的大小,而不是地址的大小。因此我们需要特化一份出来,实现这个功能。

函数特化的步骤:

1.首先要有类模板

2.关键字template后跟一对<>

3.函数名后面跟一对<>,其中放需要特化的类型

4.形参要和模版中一样

3.类模板特化

3.1全特化

全特化,就是里面的参数类型都是确定的

3.2偏特化

3.2.1部分特化

将参数表中的一部分参数特化

3.2.2对参数进一步限制

 偏特化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计出来的一个特化版本。

将其特化为指针和引用:

二、注意事项

        1.类模板的定义和声明要在同一个文件,不然容易出错

具体的报错原理,可以自己去研究。涉及类模板的分离编译。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Though even

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

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

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

打赏作者

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

抵扣说明:

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

余额充值