类模板的用法

1.格式:template<模板参数表>  (参数可以直接定义默认值)

    class 类名

    { ...};

其成员函数可以在类外定义。

eg:

 1 template <class TNO,class TScore=int,int num=10>
 2 class S
 3 {
 4 private:
 5     TNO Sid[num];
 6 public:
 7     int bel(TScore ascore);
 8     void sort();
 9 };
10 template <class TNO,class TScore,int num>
11 int S <TNO,TScore,num>::bel(TScore ascore)
12 {
13     return 0;
14 }
15 template <class TNO,class TScore,int num>
16 void S <TNO,TScore,num>::sort()
17 {
18     return Sid[0];
19 }
View Code

2.栈类模板的实现:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 template <class T>
 5 class Stack
 6 {
 7 private:
 8     int size;
 9     int top;
10     T* space;
11 public:
12     Stack(int=10);
13     ~Stack()
14     {
15         delete []space;
16     }
17     bool push(const T&);
18     T pop();
19     bool IsEmpty() const
20     {
21         return top==size;
22     }
23     bool IsFull() const
24     {
25         return top==0;
26     }
27 };
28 template <class T>
29 Stack <T>::Stack(int size)
30 {
31     this->size=size;
32     space=new T[size];
33     top=size;
34 }
35 template <class T>
36 bool Stack<T>::push(const T& element)
37 {
38     if(!IsFull())
39     {
40         space[--top]=element;
41         return true;
42     }
43     return false;
44 }
45 template <class T>
46 T Stack<T>::pop()
47 {
48     return space[top++];
49 }
50 int main()
51 {
52     Stack<char> S1(4);
53     S1.push('x');
54     S1.push('y');
55     S1.push('z');
56     S1.push('u');
57     S1.push('v');
58     while(!S1.IsEmpty())
59         cout<<S1.pop()<<endl;
60     return 0;
61 }
View Code
原文地址:https://www.cnblogs.com/jiu0821/p/4189508.html