为了解决自定义数据无法调用常规模板,提供模板的重载(具体化模板),可以位这些特定的类型提供具体化的模板
总结:
- 利用具体化的模板,可以解决自定义类型的通用化
- 学习模板并不是为了写模板,而是在STL能够运用系统提供的模板
#include<iostream>
using namespace std;
#include<string>class Person
{
public:Person(string name, int age){this->m_age = age;this->m_name = name;}string m_name;int m_age;
};
template<class 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("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();return 0;
}