/*
* special_2.cpp
*
* Created on: 2013年8月4日
* Author: Administrator
*/
#include <iostream>
#include <typeinfo>
#include <string>
using namespace std;
template <typename T>
class Type{
public:
static string name(){
return typeid(T).name();
}
};
//特化
template <>
class Type<bool>{
public:
static string name(){
return "bool !!!";
}
};
template <>
class Type<int>{
public:
static string name(){
return "int ~~~~";
}
};
template <>
class Type<double>{
public:
static string name(){
return "double ...";
}
};
template <>
class Type<char>{
public:
static string name(){
return "char ";
}
};
//偏特化
template <typename T>
class Type<T*>{
public:
static string name(){
return Type<int>::name() + " pointer";
}
};
int main(){
cout<<Type<double>::name()<<endl;
cout<<Type<int>::name()<<endl;
cout<<Type<char>::name()<<endl;
cout<<Type<int*>::name()<<endl;
cout<<Type<bool>::name()<<endl;
}
模板的特化与偏特化
最新推荐文章于 2019-06-21 13:38:16 发布
本文介绍了一个使用C++实现的模板特化与偏特化的实例。通过定义一个通用的Type模板类来获取类型名称,并针对特定类型如bool、int、double和char进行了完全特化,同时对指针类型进行了偏特化。该实例展示了如何根据不同类型返回定制的字符串表示。

553

被折叠的 条评论
为什么被折叠?



