类模板与函数模板非常相似,同样是先由你编写一个类的模板,再由编译器在你第一次使用这个模板时生成的实际代码。
实例:栈的出入栈
1 #include <iostream>
2 #include <string>
3
4 template <class T>
5 class Stack//栈类
6 {
7 public:
8 Stack(unsigned int size = 100);//构造器
9 ~Stack();//析构器
10 void push(T value);//入栈
11 T pop();//出栈
12 private:
13 unsigned int size;
14 unsigned int sp;
15 T *data;
16 };
17
18 template <class T>
19 Stack<T>::Stack(unsigned int size)
20 {
21 this->size = size;
22 data = new T(size);
23 sp = 0;
24 }
25 template <class T>
26 Stack<T>::~Stack()
27 {
28 delete []data;//删除数组
29 }
30
31 template <class T>
32 void Stack<T>::push(T value)
33 {
34 data[sp++] = value;
35 }
36
37 template <class T>
38 T Stack<T>::pop()
39 {
40 return data[--sp];
41 }
42
43 int main()
44 {
45 Stack<int> intStack(100);//定义对象
46
47 intStack.push(1);//将1推入栈
48 intStack.push(2);//将2推入栈
49 intStack.push(3);//将3推入栈
50
51 std::cout << intStack.pop() << "\n";//弹栈
52 std::cout << intStack.pop() << "\n";//弹栈
53 std::cout << intStack.pop() << "\n";//弹栈
54 }