10

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

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

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

delete pointer1,pointer2;

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

[编辑]

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

4

2 回答 2

13

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

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

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

于 2013-09-15T08:30:18.100 回答
1

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

于 2013-09-15T08:30:52.907 回答