对于删除和我们使用的元素数组delete[]
。是否可以按照我在下面的方式删除指针?
ClassA* object = new ClassA();
ClassA* pointer1 = object;
ClassA* object2 = new ClassA();
ClassA* pointer2 = object2;
delete pointer1,pointer2;
为什么不能以这种方式使用删除?
[编辑]
我可以这样说,没有实施上述删除的缺点是什么?
对于删除和我们使用的元素数组delete[]
。是否可以按照我在下面的方式删除指针?
ClassA* object = new ClassA();
ClassA* pointer1 = object;
ClassA* object2 = new ClassA();
ClassA* pointer2 = object2;
delete pointer1,pointer2;
为什么不能以这种方式使用删除?
[编辑]
我可以这样说,没有实施上述删除的缺点是什么?
这是不可能的,因为在 C++ 语言定义中没有规定。我不确定为什么该语言不支持 的项目列表是否有任何“好的”答案delete
,除了不这样做更简单的事实。
您需要delete
为每个变量写一个。当然,如果你有很多pointerX
,那么你可能应该使用数组,并使用循环来删除对象。
编辑:当然,如果你delete
在代码中的很多地方调用,你可能做错了什么——或者至少,你没有很好地遵循RAII原则。当然,有必要学习/理解动态分配以充分理解该语言,但您应该避免在您自己的代码中同时调用这两者new
-delete
让其他人解决这个问题(或编写做“正确事情”的类)
它不是这样工作的。delete 是针对单个指针的命令。您可以将指针放入结构(例如数组)或容器(例如使用向量容器类)中,并通过迭代结构/容器来删除它们中的每一个。