类型萃取---模板类的特化的应用

一、函数模板的特化:

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)

猜你喜欢

转载自blog.csdn.net/xuruhua/article/details/81090157