#include <iostream> using namespace std; template <typename T>//通用类模板,模拟了栈并未真正实现 class Stack{ public: Stack();//构造函数 ~Stack();//析构函数 void push(T t);//插入函数 T top();//读取栈顶元素 void pop();//弹出栈顶元素 bool isEmpty();//判断栈是否围殴空 private: T *pt;//指向一段连续的内存空间 int size;//当栈的元素个数 int maxSize;//此内存空间能够存储的最大元素个数 }; template <class T>Stack<T>::Stack(){ maxSize = 1000; size = 0; pt = new T[maxSize]; } template <class T>Stack<T>::~Stack() { delete [] pt; } template <class T>void Stack<T>::push(T t) { size++; pt[size - 1] = t; } template <class T>T Stack<T>::top(){ return pt[size - 1]; } template <class T>bool Stack<T>::isEmpty(){ return size == 0; } template <class T>void Stack<T>::pop() { size--; } int main() { Stack<int> a;//声明了一个类型为int的Stack a.push(1); a.push(2); a.push(3); while(!a.isEmpty()) { printf("%d ", a.top()); a.pop(); } //析构函数会被自动调用 return 0; }