首页 > 解决方案 > 我将在这段代码中的哪里添加我的删除,我将 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 运算符。我不知道我应该使用删除运算符还是不应该。请帮忙。

标签: c++

解决方案


您至少应该在 Queue 类的析构函数中实现删除运算符。

class Queue
{
  public:
    ~Queue() 
    {
      delete[] queue;
    }
};

如果您开始使用容器而不是简单的数组,这种情况会发生变化。您还可以使用一个智能指针,当它超出范围时,它将为您删除数组。

正如@mestkon 所提到的,请确保您的复制和移动构造函数与您选择的方法一致。


推荐阅读