正文

c++(模板和重载)2005-07-10 15:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jay0518/2732.html

分享到:

#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;
}

阅读(3501) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册