现在的位置: 首页 > 综合 > 正文

模板

2018年02月08日 ⁄ 综合 ⁄ 共 686字 ⁄ 字号 评论关闭
//模板重载
template<typename T>
T const & MyMax(T const &a, T const &b)
{
	return a < b ? a : b;
}
T const & MyMax(T const &a, T const &b, T const &c)
{
	return ::MyMax( ::MyMax(a,b),c);
}
//模板特化
template<typename T1,typename T2>
class MyClass
{
		//...
};
template<typename T> //局部特化
class MyClass<T,T>
{
	//...
};
template<typename T> //局部特化
class MyClass<T,int>
{
	//...
};
template<> //完全特化
class MyClass<int,float>
{
	//...
};
//模板缺省实参
template<typename T1, typename T2 = int>
class MyClass1
{
	//...
};
//非类型模板参数
template<typename T, int temp>
class MyClass2
{
	//...
};
template<typename T, int temp = 1>
class MyClass3
{
	//...
};

//关键字 typename
template<typename T>
class MyClass4{
	typename T::SubType ptr;  //SubType 是定义于类 T 内部的一种类型 
};

模板是编译时期决定的,与运行时无关.

模板的特化其实就相当于是 一种编译条件, 当模板参数为XX类时 以这种方式编译,如上面中的 MyClasss 的各种特化

抱歉!评论已关闭.