一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

类模板与函数模板非常相似,同样是先由你编写一个类的模板,再由编译器在你第一次使用这个模板时生成的实际代码。

实例:栈的出入栈

 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 }
posted on 2023-08-18 15:38  一杯清酒邀明月  阅读(25)  评论(0编辑  收藏  举报