C++ 提高教程 模板-模板的局限性
模板的通用性不是万能的# include<iostream>using namespace std;class Person{public:Person(string name, int age){this->m_Name = name;this->m_Age = age;}string m_Name;int m_Age;};//模板的局限性//模板不是万能的,有些特定数据
·
模板的通用性不是万能的


# include<iostream>
using namespace std;
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 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", 110);
Person p2("Tom", 10);
bool ret = myCompare(p1, p2);
//方法1:==运算符重载
if (ret)
{
cout << "p1==p2" << endl;
}
else
{
cout << "p1!=p2" << endl;
}
}
int main()
{
test02();
system("pause");
return 0;
}

更多推荐



所有评论(0)