模板

本文深入探讨了C++模板重载和特化的概念,包括模板重载的多种形式,如局部特化和完全特化,并详细解释了模板特化的原理和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//模板重载
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 的各种特化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值