#include<iostream>
using namespace std;
//既然有函数模板,就不要有普通函数,否则容易出现二义性
//实际开发中模板、普通函数二选一
//模板并不是万能的,有些特定数据类型,需要用具体化方式做特殊实现
//利用具体化的模板,可以解决自定义类型的通用化
//学习模板并不是为了写模板,而是在STL能够运用系统提供的模板
class Person
{
public:
Person(string name,int age)
{
this->m_name=name;
this->m_age=age;
}
string m_name;
int m_age;
};
template<typename T>
bool myCmp(T &a,T &b)
{
if(a==b)
{
return true;
}
else
{
return false;
}
}
//利用具体化Person的版本实现代码,具体化优先调用
template<> bool myCmp(Person &a,Person &b)
{
if(a.m_name==b.m_name && a.m_age==b.m_age)
return true;
else return false;
}
void test01()
{
Person p1("lyf",20);
Person p2("lyf",21);
bool ret=myCmp(p1,p2);
if(ret) cout<<"相等"<<endl;
else cout<<"不相等"<<endl;
}
int main()
{
test01();
}