一、函数模板的特化:
1、需要先有一个模板函数
template<class T>
T Max(T left, T right)
{
return left > right ? left : right;
}//这种方式不能传字符串,需要进行特化
//特化:char*
template<>
//Max<char*>这个整体是函数的名字
char* Max<char*>(char* left, char* right)
{
if (strcmp(left, right) >= 0)
return left;
return right;
}
二、模板类里面的特化:
1、全特化:把模板参数列表里面的多个模板类型都进行具体化
特化自己封装的Vector
# include<Vector.h>
template<class T>
class Vector<int>
//把Vector的模板类特化为处理整型的
{
public:
//构造函数
Vector()
:_start(NULL)
, _finish(NULL)
, _endOfStorage(NULL)
{}
private:
int* _start;
int* _finish;
int* _endOfStorage;
};
int main()
{
Vector<char> v1;//此时不能实例化为
Vector<int> v2;
return 0;
}
2、偏特化(局部特化):对模板的部分参数进行特化
(1)对一部分参数进行特化
(2)