重载函数模板(P335)
/*
函数模板可以重载,只要它们的形参表不同即可。
*函数或函数模板调用语句的匹配顺序:
1)先找参数完全匹配的普通函数(不是由模板实例化得到的模板函数)
2)再找参数完全匹配的模板函数。
3)然后找实参经过自动类型转换后能够匹配的普通函数。
4)如果上面的都找不到,则报错。
*/
#include<iostream>
using namespace std;
class myDate
{
public:
myDate();
myDate(int,int,int);
friend ostream & operator<<(ostream & os,const myDate & c);
private:
int year,month,day;
};
myDate::myDate()
{
year=1970;
month=1;
day=1;
}
myDate::myDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
ostream & operator<<(ostream & os,const myDate &c)
{
os<<c.year<<"/"<<c.month<<"/"<<c.day;
return os;
}
template<class T1,class T2>
void print(T1 arg1, T2 arg2)
{
cout<<arg1<<","<<arg2<<endl;
}
template<class T>
void print(T arg)
{
cout<<arg1<<endl;
}
int main()
{
int n=1,m=2;
print(n,m);
myDate d1,d2(2000,1,1);
print(d1,d2);
print(n,d1);
return 0;
}

浙公网安备 33010602011771号