c++ - 我将在这段代码中的哪里添加我的删除,我将 new 运算符用于队列变量
问题描述
class Queue
{
int size;
int *queue;
public:
Queue()
{
size = 0;
// im talking about this new operator that i added
queue = new int[100];
}
void remove()
{
if (size == 0)
{
cout << "Queue is empty" << endl;
return;
}
else
{
for (int i = 0; i < size - 1; i++)
{
queue[i] = queue[i + 1];
}
size--;
}
}
void print()
{
if (size == 0)
{
cout << "Queue is empty" << endl;
return;
}
for (int i = 0; i < size; i++)
{
cout << queue[i] << " <- ";
}
cout << endl;
}
void add(int a);
};
void Queue::add(int a)
{
queue[size] = a;
size++;
}
我想知道我使用的 int *queue 是否需要删除,以及我将把它放在哪里,因为我使用了 new 运算符。我不知道我应该使用删除运算符还是不应该。请帮忙。
解决方案
您至少应该在 Queue 类的析构函数中实现删除运算符。
class Queue
{
public:
~Queue()
{
delete[] queue;
}
};
如果您开始使用容器而不是简单的数组,这种情况会发生变化。您还可以使用一个智能指针,当它超出范围时,它将为您删除数组。
正如@mestkon 所提到的,请确保您的复制和移动构造函数与您选择的方法一致。
推荐阅读
- android - 从视图创建位图/屏幕截图
- javascript - 如何分裂和融合?
- javascript - 我想使用正则表达式,这样我就可以从 ASCII 码中检测到所有内容
- django - ImportError:导入测试模块失败:
- c++ - Visual Studio 2017 扩展选项卡中的 C++ 核心指南检查器缺失
- php - PHP - 将命名空间重置为全局
- node.js - 如何加入 React 应用和 Express 应用?
- ionic-framework - 不允许加载本地资源:file:///storage/emulated/0/Download/1533311989863.png ionic 3 (android)
- networking - WebLogic 如何在同一个端口上监听多个协议?
- keras - 如何使用 tensorflow 后端在 Keras 的下一层中重用最后一层的偏差