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

zer*_*d0l 9 c++ pointers delete-operator

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

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

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

delete pointer1,pointer2;
Run Code Online (Sandbox Code Playgroud)

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

[编辑]

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

Mat*_*son 11

这是不可能的,因为在C++语言定义中没有提供它.我不知道有任何"好"的答案,为什么语言不支持物品的清单delete,除了事实,这是简单的不能这样做.

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

编辑:当然,如果你delete在代码中的许多地方打电话,你可能做错了 - 或者至少,你没有很好地遵循RAII原则.这当然需要学习/了解动态分配给有语言的充分理解,但你确实应该避免调用都newdelete自己的代码-让别人那种出来(或写做"正确的事情"类)