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

评论