在类实现中为字符串的覆盖默认破坏者

Overriding default destructor for strings in class implementation

本文关键字:覆盖 默认 破坏者 字符串 实现      更新时间:2023-10-16

我正在尝试使用顺序列表实现队列。但是,对于带有字符串元素的队列,程序崩溃。

以下是队列构造函数的相关部分:

{
  string *ptr = new string[num];
}

寻找一段时间后,我怀疑问题是灾难源。在调用破坏者时,我正在删除顺序列表的数组指针,并将其设置为null:

{
  delete ptr;
  ptr = NULL;
}

但是,由于字符串库提供了默认的驱动器,因此删除字符串,然后我试图删除一个不存在的指针。我认为这将访问无法访问的内存,这会导致细分故障。队列实现非常适合INT和Double。

我正在使用int,double和字符串元素类型的模板。如果驱动器为空,则不会动态地对INT和双重元素队列的内存进行动态处理。

除了拥有一个空的类驱动器并使用默认字符串驱动器外,是否有任何简单的方法可以解决此问题?

删除仅删除非简单类型的第一个实例。删除[]调用所有实例的dtor

我不知道这里的完整范围,但是仅仅是要删除nullptr的定义很好,并且什么也不做。