我有一个指针数组:pArray[rows][columns]
,其中每个元素可以包含一个对象的指针。有些对象是在堆上的main()
中实例化的,而有些对象也是在堆上也由对象本身的实例化的:也就是说,我将pArray
传递给了一个对象成员函数,该函数创建了一个新对象,并指向它在pArray
中。
现在,当我想从pArray
删除指向对象的指针时,这里有所有权吗?意思是,如果一个对象创建了一个新对象,并在pArray
中放置了一个指向它的指针,那么仅创建者对象可以调用该指针上的delete吗?还是可以通过将数组传递给main()
和其他对象来实现?
更多细节:
该代码在网格(pArray
)上模拟了捕食者的猎物模型。因此,我首先从文件中读取初始网格配置,然后从pArray
的main()
实例化对象(捕食者和猎物)。但是捕食者和被捕食者可以繁殖,因此对象会生成新对象并通过将pArray
传递给它们,从而在pArray
上实例化其子对象。
最佳答案
不,在C++中,指针没有“所有权”,如果指针有效(包含对数据/对象的正确引用),则可以在发出delete
命令的任何位置将其取消分配。