函数模板的局限性:
对于特殊的数据类型,需要用具体方式做特殊实现
#include<iostream>
using namespace std;
//模板的局限性
//模板并非万能的,有些特定的数据类型,需要用具体方式做特殊实现
class Person
{
public:
Person(int age,string name)
{
this->m_age=age;
this->m_name=name;
}
int m_age;
string m_name;
};
//对比两个数据是否相等函数
template<typename T>
bool myCompare(T &a,T &b)
{
if(a==b)
return true;
else
return false;
}
template<> bool myCompare(Person &p1,Person &p2)
{
if(p1.m_name==p2.m_name&&p1.m_age==p2.m_age)
{
return true;
}
else
{
return false;
}
}
void test01()
{
int a=10;
int b=10;
bool ret=myCompare(a,b);
if(ret)
{
cout<<"a==b"<<endl;
}
else
{
cout<<"a!=b"<<endl;
}
}
void test02()
{
Person p1(18,"Tom");
Person p2(18,"Tom");
bool ret = myCompare(p1,p2);
if(ret)
{
cout<<"p1==p2"<<endl;
}
else
{
cout<<"p1!=p2"<<endl;
}
}
int main()
{
test02();
return 0;
}