函数的特化
使用模板时会遇到一些特殊的类型需要特殊处理,不能直接使用当前的模板函数,所以此时我们就需要对该类型特化出一个模板函数(就是写出一个模板函数专门给该类型使用)
当使用一个判断相等的模板函数时
但是该模板函数在对于字符串进行比较时就不能使用了,对于字符串我们不能直接比较,因此直接特化出一个专门供字符串使用的模板参数
注意:使用模板特化时,必须要先有基础的模板函数(就是上面第一个模板函数)
使用特换模板函数时格式有要求:
1.template 后直接跟<> 里面不用写类型
2.函数名<特化类型>(特化类型 参数1, 特化类型 参数2 , …) 在函数名后跟<>其中写要特化的类型
特化的函数的函数名,参数列表要和原基础的模板函数相相同,避免不必要的错误
在实际使用中,为了实现简单,对于一些模板函数处理有问题的特殊类型,我们将其直接写出
当有可以直接匹配的函数时,即使有特化出的函数,都优先使用直接匹配的函数
类的模板特化
类的模板特化分为两种,一种是全特化,一种为偏特化
全特化:即将所有的模板类型都进行特化
偏特化:对于模板的类型做一些限制
偏特化分为两种 一种是部分特化,一种是对于模板类型的进一步限制
部分特化:就是只对函数模板的一部分模板类型进行特化
对类型的范围的限制,主要的类型基础不变
在调用时都将调用与自己的类型最相匹配的。