我搜索了这个问题的答案,但没有遇到像我这样的案例。
拥有以下代码:
A
{
private:
SomeObject** _array;
public:
A(int n) {
_array = new SomeObject*[n];
}
virtual ~A(){
delete[] _array;
}
}
正如您所见,_array是指向指针数组的指针,指向对象(SomeObject)。 代码中的析构函数是否正确? 据我所知,“delete []”调用数组中每个元素的析构函数。由于这是一个指针数组,简单地调用“delete []”是不正确的。 在我看来,正确的解决方案是1)迭代数组并删除每个元素,然后2)调用“delete [] _array”。
非常感谢你!