队列的析构函数(它有什么好处) 我在学习C++中的队列实现时,我来了这个声明 queue::~queue() { if (storage) delete [] storage; }

队列的析构函数(它有什么好处) 我在学习C++中的队列实现时,我来了这个声明 queue::~queue() { if (storage) delete [] storage; },c++,data-structures,queue,C++,Data Structures,Queue,那么,如果(存储)意味着什么呢,在实现中(存储应该是一个存储数据的动态数组。那么为什么我们说如果它是真的,那么删除存储是否意味着存储已满?存储是一个指针,指针被认为是“真的”如果它不是空指针。因此,这是在测试存储是否不为空,也就是说,已使用新建为队列分配了存储(如果未分配存储,则可能指针初始化为空指针)。如果未分配任何内容,则无需删除它 不过,这是一个冗余检查,因为相同的测试内置在delete操作符本身中。不过,有些程序员喜欢在代码中显式显示。这是测试指针是否不为null。这实际上不是必需的,因

那么,如果(存储)意味着什么呢,在实现中(存储应该是一个存储数据的动态数组。那么为什么我们说如果它是真的,那么删除存储是否意味着存储已满?

存储是一个指针,指针被认为是“真的”如果它不是空指针。因此,这是在测试
存储
是否不为空,也就是说,已使用
新建
为队列分配了存储(如果未分配存储,则可能指针初始化为空指针)。如果未分配任何内容,则无需
删除它


不过,这是一个冗余检查,因为相同的测试内置在
delete
操作符本身中。不过,有些程序员喜欢在代码中显式显示。

这是测试指针是否不为null。这实际上不是必需的,因为
delete
在参数为null时不做任何操作。指针可以隐式转换为tO<代码> BoOL <代码> C++中。<代码> NulLPTR < /C> >转换为<代码> false <代码>和所有其他指向“代码>真< /COD>的指针。因此,如果参数(存储)是否为null或指定为零表示这不包含任何内容,不需要删除它?是的。尽管如前所述,
delete
运算符内置了此检查。您对指针了解多少?
queue::queue(int queuesize){front=rear=0;capacity=size=queuesize;count=0;if(queuesize>0)data=new int[queuesize];else data=0;}
这是构造函数的实现。类声明中是否为
storage
成员变量分配了默认值?否,但正如您在中所注意到的,一旦调用构造函数,它将检查(如果为true,则队列大小等于零或否,因此本例中的数据是存储分配给zeroHuh的吗?
Data
如何与
Storage
相同?构造函数中的变量与析构函数中的变量不同?或者问题中的代码是否来自与注释不同的类?