模板函数template functions和模板类的基本区别template class

通过侯老师编写的书籍MFC中,对Template有了一个更加深刻的认识。

首先,介绍模板函数template functions:

         计算一个数值幂次方,函数名为power。该函数只接受正幂次方数,如果为负幂次方,使结果为0.

         模板函数中,<class T>只不过是表示:T 是一种类型,该类型可以是int,long,也可以是double类型,而此一类型将在调用此函数时才给予。

         下面是power函数的template版本:

template<class T>

T power(T base,int exponent)

{

         T result=base;

         if(exponent==0)

                   return (T)1;

         if(exponent<0)

                   return (T)0;

         while(--exponent)

                   result *=base;

         return result;

}

注意返回值必须为类型T,以吻合template函数的声明。

下面是template函数的调用方法:

#include "iostream.h"

void main()

{

         int i=power(5,4);

         long l=power(1000L,3);

         cout<<"i= "<<i<<endl;

         cout<<"l= "<<l<<endl;

}

结果为:

i=625

l=1000000000

在第一次调用时,T变成了int,在第二次调用中T变成了long

 

下面是模板类template classes的介绍:

         同样举个例子,让Cthree类储存三个成员变量,成员函数Min传回最小值,成员函数Max传回最大值。我们把他设计为template  classes,以便这个类能适应于各个样式的数据类型:

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;

         }

T看成是int,long,double等类型就可以了,还要注意每个成员函数前都要加上template <class T>,而且类名称应该使用CThree<T>

下面是template  class 的使用方式:

#include "iostream.h"

void main()

{

         CThree<int>obj1(2,5,4);

         cout<<obj1.Min()<<endl;

         cout<<obj1.Max()<<endl;

 

         CThree<float>obj2(8.52,-6.75,4.54);

         cout<<obj2.Min()<<endl;

         cout<<obj2.Max()<<endl;

}

结果为:

2

5

-6.75

8.52

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值