gpt4 book ai didi

c++ - 指针所有权

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:51 24 4
gpt4 key购买 nike

我有一个指针数组:pArray[rows][columns],其中每个元素都可以包含一个指向对象的指针。有些对象是在堆上的main()中实例化的,有些是对象自己实例化的也在堆上:也就是我把pArray传给了一个对象成员函数,并且该函数创建了一个新对象,并将指向它的指针放在 pArray 中。

现在,当我想从 pArray 中删除指向对象的指针时,这里是否存在所有权?意思是,如果一个对象创建了一个新对象并在 pArray 中放置了一个指向它的指针,那么只有创建者对象可以在该指针上调用 delete 吗?或者我可以从 main() 和其他对象通过将数组传递给它们来完成吗?

更多细节:

该代码在网格 (pArray) 上模拟捕食者猎物模型。因此,我首先从文件中读取初始网格配置,并在 main()pArray 上实例化对象(捕食者和猎物)。但是捕食者和猎物可以繁殖,因此对象会产生新对象,并通过将 pArray 传递给它们,它们会在 pArray 上实例化它们的子对象。

最佳答案

对于原始指针,所有权纯粹是一个概念。只要您使用的是原始指针,将指向对象的所有权分配给任何人和任何事物完全取决于您。这是你的设计问题。没有这样的“规则”,即对象应该被创建它们的人删除。所有权可以保留或传递。所有权可以共享(如在引用计数所有权方案中)。同样,这取决于您的设计和意图。

各种智能指针类将帮助您表达您的意图并实现您的意图。使用原始指针,您必须记住谁拥有什么并手动执行所有操作。

关于c++ - 指针所有权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com