比如应用在判断两个类型是否相等,但是浮点与双精度差值在某一个特定小值即认为相等
这里举个另外例子,特化让第一个string参数加到第二个string参数后的例子
//特化 string
template<>
class DataAdd<string>
{
public:
string Add(string a, string b) {
return b + a;
}
};
//特化的例子
using namespace std;
class wrappstring {
public:
wrappstring(string s) {
m_s = s;
}
wrappstring& operator+ (const wrappstring& _T) {
m_s += _T.m_s;
return *this;
}
string m_s;
};
template<typename T>
class DataAdd
{
public:
T Add( T a, const T& b) {
return a + b;
}
};
//特化 string
template<>
class DataAdd<string>
{
public:
string Add(string a, string b) {
return b + a;
}
};
void test_t()
{
string a("abc");
string b("xyz");
DataAdd<string> _data1;
string ret = _data1.Add(a, b);
wrappstring i1("abc"), i2("xyz");
DataAdd<wrappstring> _data2;
wrappstring r1 = _data2.Add(i1, i2);
DataAdd<char> _data3;
char r2 = _data3.Add('A', 'B');
}