类模版偏特化示例

using namespace std;

template<typename A,typename B,typename C,typename D,typename E,typename F>
class CTempl
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, B, C, D, E, F>" << endl;
 }
};

// 模版特化情形1
template<typename A>
class CTempl<A, A, A, A, A, A>
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, A, A, A, A, A>" << endl;
 }
};

// 模版特化情形2
template<typename A, typename B>
class CTempl<A, B, B, B, B, B>
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, B, B, B, B, B>" << endl;
 }
};

// 模版特化情形3
template<typename A, typename B>
class CTempl<A, A, B, B, B, B>
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, A, B, B, B, B>" << endl;
 }
};

// 模版特化情形4
template<typename A, typename B>
class CTempl<A, A, A, B, B, B>
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, A, A, B, B, B>" << endl;
 }
};

// 模版特化情形5
template<typename A, typename B>
class CTempl<A, B, A, B, A, B>
{
public:
 void Fun()
 {
  std::cout << "CTempl<A, B, A, B, A, B>" << endl;
 }
};

// 模版特化情形6,参数完全特化
template <>
class CTempl<int, int, double, short, char, float>
{
public:
 void Fun()
 {
  std::cout << "CTempl<int, int, double, short, char, float>" << endl;
 }
};

void AppMain()
{
 /*
 匹配: template<typename A> class CTempl<int, int, double, short, char, float>
 */
 CTempl<int, int, double, short, char, float> obj0;
 obj0.Fun();

 /*
 匹配: template<typename A> class CTempl<A, A, A, A, A, A>
 */
 CTempl<int, long, double, short, char, float> obj1;
 obj1.Fun();

 /*
 匹配: template<typename A, typename B> class CTempl<A, B, B, B, B, B>
 */
 CTempl<int, long, long, long, long, long> obj2;
 obj2.Fun();

 /*
 匹配: template<typename A, typename B> class CTempl<A, A, B, B, B, B>
 */
 CTempl<int, int, long, long, long, long> obj3;
 obj3.Fun();

 /*
 匹配: template<typename A, typename B> class CTempl<A, A, A, B, B, B>
 */
 CTempl<int, int, int, long, long, long> obj4;
 obj4.Fun();

 /*
 匹配: template<typename A, typename B> class CTempl<A, B, A, B, A, B>
 */
 CTempl<int, long, int, long, int, long> obj5;
 obj5.Fun();

总结:类模板实例化时,编译器会根据该实例的模版参数类型的排列特点自动地匹配合适的类模版.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值