我有一个动态数组(例如,SIZE = 2):
polyTerm** polyn = new polyTerm* [SIZE];
然后我向数组中添加了一些新的ponlyTerm对象:
polyn[0] = new polyTerm(5.0,1);
polyn[1] = new polyTerm(2.0,1);
现在我想从插槽0中删除该对象并使指针为空。我该怎么做呢?我目前有:
delete &polyn[0];
然后我用:
polyn[0] = NULL;
使指针为空。
这会有用吗?
编辑:
更正,我需要使用delete polyn[0]
- 即便如此,将其设置为NULL应该会影响指针,因为它仍然会在技术上指向对象的原始位置。将其重置为NULL可以删除以后可能弹出的任何错误。
答案 0 :(得分:2)
您发布的代码是正确的。
单个对象指针polyn[0]
是使用[]
的非new
版本创建的,因此必须使用非[]
版delete
删除1}} - 这就是你在做什么。
我仍然建议首先避免所有,然后使用vector <unique_ptr <polyTerm> >
代替。然后,您需要做的只是erase
您想要的任何元素,或clear
整个vector
,而不必担心使用new
和{{的正确类型和数量1}}。
我将演示使用delete
智能指针,通过使用vector
整齐地避免缺少make_unique
(直到C ++ 14)。
shared_ptr