c++ - 实现复制构造函数、析构函数以及如何为队列重载赋值运算符
问题描述
这就是我所拥有的,但我不确定这是否有效。我不确定以这种方式复制是否有效,而且我想不出一种超载的方法。复制时,我给出相同的大小,将标题和尾部(第一个和最后一个元素的索引)设置到同一个位置,并将数组的每个元素复制到另一个元素中。重载在这里似乎很棘手。我以前做过重载,但从来没有使用循环数组队列。
#include <iostream>
using namespace std;
class CircArrayQueue
{
private:
int *arr;
int head;
int tail;
int size;
CircArrayQueue()
{
arr = new int[5];
head = -1;
tail = -1;
}
CircArrayQueue(int s)
{
arr = new int[s];
head = -1;
tail = -1;
size = s;
}
void copyQueue(CircArrayQueue &object)
{
object.size = this->size;
for (int i = 0; i < this->size; i++)
{
object.arr[i] = this->arr[i];
}
object.head = this->head;
object.tail = this->tail;
}
~CircArrayQueue()
{
delete[] arr;
}
};
解决方案
我将学习的完美解决方案是复制交换习语,它可以完成工作。 什么是复制和交换成语?
推荐阅读
- android-studio - import kotlinx.android.synthetic.main.activity_main.* kotlinx 中的错误
- python - 无法将文章内容附加到列表
- python - 使用apply时,如何在整个事情超时之前保存使用pandas列的API调用的结果?
- python - 有没有办法使用 Python 将图像从 API 导入 PowerBI 仪表板
- angular - 如何使用 Angular Schematics 修改 app.module.ts
- vuejs2 - 如何通过脚本包含使用 CKEditor5 (Vue2) 插件?
- windows - 如何在混合域计算机上获取 SAM 兼容的域名?
- python - pytest 无法识别从命令行发送的参数
- go - 使用递归填充地图时的意外行为
- tensorflow - 如何在 tf.where tensorflow 中给出否定条件