以下是一个整数栈类的定义,将其改写成类模板: const int SIZE = 100; // 栈的大小 class Stack{ public: Stack(); // 构造函数 ~Stack(); // 析构函数 void Push(int n); // 在栈的末尾加入一个新元素n int Pop(); // 删除栈的末尾元素并返回它的值 private: int stack[SIZE]; // 用来存放栈元素的数组 int tos; // 目前栈中的元素个数 };
时间: 2024-02-10 21:15:56 浏览: 90
以下是修改后的代码,将 Stack 类改写成了类模板:
```c++
template <typename T, int SIZE> // 类模板
class Stack {
public:
Stack(); // 构造函数
~Stack(); // 析构函数
void Push(T n); // 在栈的末尾加入一个新元素n
T Pop(); // 删除栈的末尾元素并返回它的值
private:
T stack[SIZE]; // 用来存放栈元素的数组
int tos; // 目前栈中的元素个数
};
template <typename T, int SIZE>
Stack<T, SIZE>::Stack() {
tos = 0;
}
template <typename T, int SIZE>
Stack<T, SIZE>::~Stack() {}
template <typename T, int SIZE>
void Stack<T, SIZE>::Push(T n) {
if (tos == SIZE) {
cout << "Stack is full." << endl;
return;
}
stack[tos++] = n;
}
template <typename T, int SIZE>
T Stack<T, SIZE>::Pop() {
if (tos == 0) {
cout << "Stack is empty." << endl;
return T();
}
return stack[--tos];
}
```
使用时可以根据需要指定 T 的类型和 SIZE 的值,例如:
```c++
Stack<int, 100> intStack;
Stack<double, 50> doubleStack;
```
阅读全文