模版重载

来源:互联网 发布:安徽网络电视台官网 编辑:程序博客网 时间:2024/05/01 15:22

"max.h"

 

#include <string>

template<typename T>
inline T const& maxOfObject(T const& a,T const& b){
 return a>b?a:b;
}

template<typename T>
inline T const& maxOfObject(T const& a,T const& b,T const& c){
 return maxOfObject(maxOfObject(a,b),c);
}

template<typename T>
inline T* const& maxOfObject(T* const& a,T* const& b){
 return *a>*b?a:b;
}

inline char const* const& maxOfObject(char const* const& a,char const*  const& b){
 return strcmp(a,b)>0?a:b;
}

 

//**********************************************

 

#include "max.h"
#include <iostream>
#include <string>
using namespace std;

 

int main(){
 int a = 7;
 int b =42;
 cout<<maxOfObject(a,b)<<endl;

 string s = "hey";
 string t = "you";
 cout<<maxOfObject(s,t)<<endl;

 int *p1 = &b;
 int *p2 = &a;
 cout<<p1<<" "<<p2<<endl;
 cout<<maxOfObject(p1,p2)<<endl;

 char const* s1 = "David";
 char const* s2 = "Nico";
 cout<<maxOfObject(s1,s2)<<endl;
 
 cout<<maxOfObject(7,42,68)<<endl;

 const char* s11 = "Frederic";
 const char * s22 = "Anica";
 const char * s33 = "Lucas";

 cout<<maxOfObject(s11,s22,s33)<<endl;

 }