template<class T>
void f(T a,T b)
{
a = b;
}
上面的赋值操作并不是都可行,比如说两个数组
再比如
template<class T>
void f(T a,T b)
{
if(a < b){.....};
}
如果传的是类,怎么比较啊,并不知道比较规则啊
不过可以通过运算符重载 ==
不过太麻烦了
可以通过具体化来实现
#include<bits/stdc++.h> 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<class T> bool cmp(T &a,T &b) { if(a == b) return 1; else return 0; } //只有具体化才可以通用模板,不写这个person传进去是错的 //具体化person版本 template<> bool cmp(person &p1,person &p2) { if(p1.m_age == p2.m_age && p1.m_name == p2.m_name) return 1; else return 0; } void test() { int a = 10,b = 10; cout << cmp(a,b) << endl; person p1("aa",10); person p2("aa",10); //如果不利用具体化的模板,是不可以的下面这行, //只有具体化才可以通用模板 cout << cmp(p1,p2) << endl; p1.m_age = 11; cout << cmp(p1,p2) << endl; } int main() { test(); return 0; }