stack复制构造函数
时间: 2023-11-25 12:50:15 浏览: 41
以下是关于stack复制构造函数的介绍:
在C++中,复制构造函数是一种特殊的构造函数,它在创建对象时使用另一个相同类型的对象来初始化新对象。当我们使用一个对象去初始化另一个对象时,复制构造函数就会被调用。对于stack来说,复制构造函数用于创建一个新的stack对象,并将其初始化为另一个stack对象的副本。
下面是一个示例代码,展示了如何定义一个stack的复制构造函数:
```c++
#include <iostream>
#include <stack>
using namespace std;
class MyStack {
private:
int* arr;
int top;
int capacity;
public:
// 默认构造函数
MyStack(int size = 10) {
arr = new int[size];
capacity = size;
top = -1;
}
// 复制构造函数
MyStack(const MyStack& other) {
capacity = other.capacity;
top = other.top;
arr = new int[capacity];
for (int i = 0; i <= top; i++) {
arr[i] = other.arr[i];
}
}
// 析构函数
~MyStack() {
delete[] arr;
}
// 入栈
void push(int x) {
if (top == capacity - 1) {
cout << "Stack Overflow" << endl;
return;
}
arr[++top] = x;
}
// 出栈
void pop() {
if (top == -1) {
cout << "Stack Underflow" << endl;
return;
}
top--;
}
// 返回栈顶元素
int peek() {
if (top == -1) {
cout << "Stack is Empty" << endl;
return -1;
}
return arr[top];
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
// 返回栈的大小
int size() {
return top + 1;
}
// 打印栈中的元素
void printStack() {
if (top == -1) {
cout << "Stack is Empty" << endl;
return;
}
for (int i = top; i >= 0; i--) {
cout << arr[i] << " ";
}
cout << endl;
}
};
int main() {
MyStack s1(5);
s1.push(1);
s1.push(2);
s1.push(3);
s1.push(4);
s1.push(5);
MyStack s2 = s1; // 复制构造函数被调用
s1.pop();
s2.pop();
cout << "s1: ";
s1.printStack();
cout << "s2: ";
s2.printStack();
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)