C++中的template学习

引用自《深入浅出MFC》

c++中的template有两种,一种是function,另一种针对class

  • 针对function的: 针对class

       定义:

 

template <class T> T power(T baseint  exponent);

 

       使用:

 

template <class T>  
              T power(T 
baseint
 exponent)
             
{
                   T result 
= base
;
                   
if (exponent == 0)  return (T)1
;
                   
if (exponent < 0)   return (T)0
;
                   
while (--exponent)  result *= base
;
                     
return
 result;
              }


             #include 
<iostream.h>
                
void  main()
                
{
                       
int i = power(54
);
                       
long l = power(1000L3
);
                       
long double d = power((long double)1e5, 2
)
                       cout 
<< "i= " << i <<
 endl;
                       cout 
<< "l= " << l <<
 endl;
                       cout 
<< "d= " << d <<
 endl;
                  }


 

 

  •  
 template <class T>
 
class  CThree
 
{
     
public
 :
             CThree(T t1, T t2, T t3);
             T Min();
             T Max();
 
private
:
             T a, b, c;
}
;

template 
<class T>

T CThree
<T> ::Min()
 
{
          T minab 
= a < b ?
 a : b;
           
return minab < c ?
 minab : c;
 }


template 
<class T>
T CThree
<T> ::Max()
 
{
          T maxab 
= a < b ?
 b : a;
           
return maxab < c ?
 c : maxab;
 }

 template 
<class T>
CThree
<T> ::CThree(T t1, T t2, T t3) :
       a(t1), b(t2), c(t3)
 

        
return
;
 }


                使用:

#include  < iostream.h >
void  main()
{
      CThree
<int> obj1(254);
     cout 
<< obj1.Min() << endl;
     cout 
<< obj1.Max() << endl;
     CThree
<float> obj2(8.52-6.754.54);
     cout 
<< obj2.Min() << endl;
     cout 
<< obj2.Max() << endl;
    CThree
<long> obj3(646600L437847L364873L);
cout 
<< obj3.Min() << endl;
cout 
<< obj3.Max() << endl;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值