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

时间:2013-09-15 08:27:31

标签: c++ pointers delete-operator

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

ClassA* object = new ClassA();
ClassA* pointer1 = object;

ClassA* object2 = new ClassA();
ClassA* pointer2 = object2;

delete pointer1,pointer2;

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

[编辑]

我可以说,有什么缺点导致上述删除没有实现?

2 个答案:

答案 0 :(得分:10)

这是不可能的,因为在C ++语言定义中没有提供它。我不确定为什么语言不支持delete的项目列表有任何“好”的答案,除了这样做更简单的事实。

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

编辑:当然,如果您在代码中的许多地方呼叫delete,您可能做错了 - 或者至少,您没有很好地遵循RAII原则。当然有必要学习/理解动态分配以充分理解语言,但是你应该避免在自己的代码中同时调用newdelete - 让其他人对此进行排序(或写出来)做“正确的事”的课程。)

答案 1 :(得分:0)

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