#include<iostream>
#include<iomanip>
using namespace std;
template <class T> T larger(T a,T b);
template<>long* larger<long*>(long* a,long* b);
template<class T>T larger(const T array[],int count);
template<class TReturn,class TArg>TReturn larger(TArg a,TArg b);
int main()
{
cout<<endl;
cout<<"the larger between 1.2 and 3.5 is:"<<larger(1.2,3.5)<<endl;
int value=25;
int value1=21;
cout<<"the larger between"<<value<<"and"<<value1<<"is:"<<larger(value,value1)<<endl;
long value3=35;
long value4=25;
cout<<"the larger between"<<value3<<"and"<<value4<<"is:"<<larger(value3,value4)<<endl;
cout<<"the larger between"<<value3<<"and"<<value4<<"is:"<<*larger(&value3,&value4)<<endl;
double x[]={10.5,12.5,2.5,13.5,5.5};
cout<<"Largest element has the value"<<larger(x,sizeof x/sizeof x[0])
<<endl;
cout<<"larger of 1.5 and 2.5 is:"<<larger<int>(1.5,2.5)<<endl;
}
template <class T> T larger(T a,T b)
{
cout<<"standard version"<<endl;
return (a>b)?a:b;
}
template<>long* larger<long*>(long* a,long* b)
{
cout<<endl
<<"specialized version"<<endl;
return *a>*b?a:b;
}
template<class T>T larger(const T array[],int count)
{
cout<<endl<<"template overload version for arrays"<<endl;
T result=array[0];
for(int i=0;i<count;i++)
if(array[i]>result)
result=array[i];
return result;
}
template <class TReturn,class TArg>TReturn larger(TArg a,TArg b)
{
return a>b?a:b;
}
正文
c++(模板和重载)2005-07-10 15:28:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/jay0518/2732.html
阅读(3501) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论