重载函数模板(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;
}

posted @ 2020-04-18 08:17  CollisionDimension  阅读(150)  评论(0)    收藏  举报