// 类模版的某个成员函数不适用于某种类型时,可以对该成员函数针对类型进行特化.
// 示例:
using namespace std;
class CExcepter {};
template <typename T>
class CTempl
{
public:
CTempl() {}
~CTempl() {}
public:
void FunName()
{
std::cout << "FunName()" << endl;
}
};
// 假设类模板的成员函数FunName不适用于CExcept
// 现针对CExcept这种类型,对成员函数FunName进行特化
// 在类模版外面定义声明(是否必须这样做)
template<>
void CTempl<CExcepter>::FunName()
{
std::cout << "CTempl<CExcept>::FunName()" << endl;
}
// 测试
int AppMain()
{
CTempl<int> Obj1;
Obj1.FunName(); // 输出:FunName()
CTempl<CExcepter> Obj2;
Obj2.FunName(); // 输出:CTempl<CExcept>::FunName()
return 1;
}