C++模板template

2021-07-12 13:09

阅读:653

标签:span   就是   end   double   www.   col   注意   efi   space   

模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。

1、模板函数

 1 #include  2 using namespce std;
 3 
 4 //声明一个函数模版,用来比较输入的两个相同数据类型的参数的大小
 5 //class也可以被typename代替,T可以被任何字母或者数字代替。
 6 template class T>
 7 T min(T x,T y)
 8 { 
 9     return(xx:y;
10 }
11 
12 void main()
13 {
14      int n1=2,n2=10;
15      double d1=1.5,d2=5.6;
16      cout"较小整数:"endl;
17      cout"较小实数:"endl;
18      system("PAUSE");
19 }

2、模板类

 1 // ClassTemplate.h
 2 #ifndef ClassTemplate_HH
 3 #define ClassTemplate_HH
 4 
 5 template  6 class myClass
 7 {
 8 private:
 9      T1 I;
10      T2 J;
11 public:
12      myClass(T1 a, T2 b);//Constructor
13      void show();
14 };
15 
16 //注意,函数定义也是在.h文件中。
17 template 18 myClass::myClass(T1 a,T2 b):I(a),J(b)
19 {
20 }
21 
22 template 23 void myClass::show()
24 {
25      cout"I="", J="endl;
26 }
27 
28 #endif
29 
30 // main.cpp
31 #include 32 #include "ClassTemplate.h"
33 using namespace std;
34 void main()
35 {
36      myClassint,int> class1(3,5);
37      class1.show();
38      myClassint,char> class2(3,a);
39      class2.show();
40      system("PAUSE");
41 }

3、模板类型的参数
  1)一般来说,非类型模板参数可以是常整数(包括枚举)或者指向外部链接对象的指针。
  那么就是说,浮点数是不行的,指向内部链接对象的指针是不行的。

  2)模板类型是一个容器或类

 1 template  2 void print(T v)
 3 {
 4     T::iterator itor;
 5     for (itor = v.begin(); itor != v.end(); ++itor)
 6     {
 7         cout " ";
 8     }
 9     cout  endl;
10 }
11 
12 void main(int argc, char **argv)
13 {
14     listint> l;
15     l.push_back(1);
16     l.push_front(2);
17     if(!l.empty())
18         print(l);
19     vectorint> vec;
20     vec.push_back(1);
21     vec.push_back(6);
22     if(!vec.empty())
23         print(vec);
24 }

 

 

附:参考http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html

C++模板template

标签:span   就是   end   double   www.   col   注意   efi   space   

原文地址:https://www.cnblogs.com/wangbin-heng/p/9545333.html


评论


亲,登录后才可以留言!