使用单个删除运算符删除多个指针

Deleting multiple pointers with single delete operator

本文关键字:删除 指针 运算符 单个      更新时间:2023-10-16

对于删除和元素数组,我们使用delete[] .是否可以按照我在下面的方式删除指针?

ClassA* object = new ClassA();
ClassA* pointer1 = object;
ClassA* object2 = new ClassA();
ClassA* pointer2 = object2;
delete pointer1,pointer2;

为什么不能以这种方式使用删除?

[编辑]

我可以这样说吗,上述删除没有实施的缺点是什么?

是不可能的,因为C++语言定义中没有对此进行规定。我不确定为什么该语言不支持delete项目列表有任何"好"的答案,除了不这样做更简单的事实。

您需要为每个变量编写一个delete。当然,如果你有很多pointerX,那么你可能应该使用数组,并使用循环来删除对象。

编辑:当然,如果你在代码中的许多地方调用delete,你可能做错了什么 - 或者至少,你没有很好地遵循RAII原则。当然,学习/理解动态分配以充分理解语言是必要的,但你应该真正避免在自己的代码中同时调用newdelete - 让其他人解决这个问题(或编写做"正确事情"的类)

它不是这样工作的。 删除是单个指针的命令。您可以将指针放在结构(例如数组)或容器(例如使用向量容器类)中,并通过迭代结构/容器来删除每个指针。