模板的局限性
模板并不是万能的,有些特定的数据类型,需要用具体化方式做特殊实现
template<class T>
bool compare(T a,T b)
{
if(a == b)
{
return true;
}
else
{
return false;
}
}
class Person
{
Person(string s,int i)
{
name = s;
age = i;
}
string name;
int age;
}
Person a("Tom",10);
Person b("Tom",10);
compare(a,b); // error 类Person 没有重载==
//利用具体化Person的版本实现代码,具体化优先调用
template<> bool compare(Person a,Person b)
{
if(a.age == b.age && a.name== b.name)
{
return true;
}
else
{
return false;
}
}
总结:
- 利用具体化的模板,可以解决自定义类型的通用化
- 学习模板并不是为了写模板,而是在STL 利用系统提供的模板