1 template<typename T> 2 void swap(T &a,T &b) 3 { 4 T temp=a; 5 a=b; 6 b=temp; 7 } 8 int add(double a,double b) 9 { 10 return a+b; 11 } 12 int main() 13 { 14 int ia=3; 15 double db=5.0; 16 char s1[]="good",s2[]="better"; 17 int x=add(ia,db); 18 /*swap(ia,db); 19 swap(s1,s2);*/ 20 } 21 //------------------- 22 template<typename T> 23 T max(T a,T b) 24 { 25 return a<b?b:a; 26 } 27 //const T&a与T const&a等价 28 //---------------------------------------- 29 #include<iostream> 30 template<typename T> 31 T const& max(T const& a,T const& b) 32 { 33 return a<b?b:a; 34 } 35 int main() 36 { 37 int ia=3; 38 double db=5.0; 39 std::cout<<max<double>(ia,db)<<"\n"; 40 std::cout<<max(static_cast<double>(ia),db)<<"\n"; 41 } 42 //-------------------------------------------- 43 #include<iostream> 44 template<typename T> 45 void swap(T &a,T&b) 46 { 47 T temp=a; 48 a=b; 49 b=temp; 50 } 51 int main() 52 { 53 int ia=3; 54 const int cb=5; 55 swap(ia,7); 56 swap<int>(ia,7); 57 swap(cb,7); 58 swap<const int>(ia,7); 59 } 60 //---------------- 61 const char*const& max(const char*const&a,const char* const&b) 62 { 63 return std::strcmp(a,b)<0?b:a; 64 } 65 //------------------ 66 void f(int *ix,int *iy,double *dx,double *dy) 67 { 68 int *ip=max(ix,iy); 69 double *dp=max(dx,dy); 70 } 71 //----------------------------------- 72 #include<iostream> 73 template<typename T> 74 T const& max(T const&a,T const&b) 75 { 76 return a<b?b:a; 77 } 78 template<typename T> 79 T*const& max(T*const&a,T*const&b) 80 { 81 return *a<*b?b:a; 82 } 83 const char*const&max(const char* const&a,const char*const&b) 84 { 85 return std::strcmp(a,b)<0?b:a; 86 } 87 int main() 88 { 89 int ia=3,ib=7; 90 char*s1="hello"; 91 char*s2="hell"; 92 std::cout<<*max(&ia,&ib)<<"\n"; 93 std::cout<<max(s1,s2)<<"\n"; 94 std::cout<<max(ia,ib)<<"\n"; 95 }
相关文章: