#include<iostream>
#include<string>
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<class T>
bool myCompare(T& a, T& b)
{
if (a == b)
{
return true;
}
else
{
return false;
}
}
//利用具体化的person版本实现代码 ,具体化优先调用
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 = 20;
bool ret = myCompare(a, b);
if (ret)
{
cout << "a==b" <<endl;
}
else
{
cout << "a!=b" << endl;
}
}
void test02()
{
person p1("Tom", 10);
person p2("Tom", 10);
bool ret = myCompare(p1,p2);
if (ret)
{
cout << "p1==p2" << endl;
}
else
{
cout << "p1!=p2" << endl;
}
}
int main()
{
//test01();
test02();
system("pause");//按任意键继续
return 0;//关闭程序
}
07模板-模板的属性
最新推荐文章于 2024-08-21 18:16:36 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)