打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
函数模板 类模板
关键字: template <class t>, template <typename t>

模板

       模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。

      (1)函数模板

      函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板。

Cpp代码
  1.  template <class T> //或写成:template <typename T>    函数参数的类型T
  2.  T abs(T val)   
  3. {   
  4.        return val<0 ? -val : val;   
  5.  }  

   

   在函数模板被调用时,编译器根据实际参数的类型确定模板参数T的类型,并自动生成一个对应的函数,即模板函数。模板参数的类型不同,生成的模板函数也不同。

 

     例 1 函数模板的定义和使用

Cpp代码
  1. #include <iostream.h>   
  2.   
  3. template <class T>            //定义模板   
  4. T abs(T val)                //定义函数模板   
  5. {   
  6.     return val<0 ? -val : val;   
  7. }   
  8.   
  9. void main()   
  10. {   
  11.     int i=100;   
  12.     cout <<abs(i)<<endl;    //类型参数T替换为int   
  13.     long l=-12345L;   
  14.     cout <<abs(l)<<endl;    //类型参数T替换为long   
  15.     float f=-125.78F;   
  16.     cout <<abs(f)<<endl;    //类型参数T替换为float   
  17. }  

 

     定义函数模板时也可以使用多个类型参数,这时每个类型参数前面都要加上关键字class或typename,其间用逗分隔,其形式如下所示。

      template <class T1,class T2,class T3>

 

     例 2 使用多个类型参数的函数模板

Cpp代码
  1. #include <iostream.h>   
  2.   
  3. template <class T1,class T2>   
  4. T1 Max(T1 x,T2 y)   
  5. {   
  6.     return x>y ? x: (T1)y;   
  7. }   
  8.   
  9. void main()   
  10. {   
  11.     int i=100;   
  12.     float f=-125.78F;   
  13.     cout <<Max(i,f)<<endl;          //类型参数T1替换为int,T2替换为float   
  14. }  

 

   (2)类模板

         使用多个类型参数的类模板

Cpp代码
  1. #include <iostream.h>   
  2.   
  3. template <class T1,class T2>          //使用2个类型参数   类的数据变量参数类型T
  4. class MyTemClass                        //定义类模板   
  5. {   
  6. private:   
  7.     T1 x;   
  8.     T2 y;   
  9. public:   
  10.     MyTemClass(T1 a,T2 b) { x=a;y=b; }  //构造函数   
  11.     void ShowMax()                      //输出最大的数据成员   
  12.     {   
  13.         cout <<"MaxMember="<<(x>y?x:y)<<endl;   
  14.     }   
  15. };   
  16.   
  17. void main()   
  18. {   
  19.     int a=100;   
  20.     float b=123.45F;   
  21.     MyTemClass<int,float> mt(a,b);    //声明类模板的对象   
  22.     mt.ShowMax();   
  23. }  

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
模板——函数模板与类模板
30分钟了解C++11新特性
C++中模板使用详解(转)——写得非常棒,赞~ - 第四维空间 - C++博客
C 模板详解(一)
模板
C++模板常用使用方法介绍
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服