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