gpt4 book ai didi

c++ - "delete this"到一个用 std::shared_ptr 分配的对象?

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

我知道,每当您使用传统指针为 new 分配内容时,都可以在 C++ 中说 delete this。事实上,我也知道如果你小心处理它是很好的做法。如果对象被 std::shared_ptr 持有,我可以让对象说 delete this 吗?那应该调用析构函数,对吗?给你一个想法,我正在制作一个游戏,其中一艘船可以发射导弹,我想让导弹自行删除。

最佳答案

不,这不安全,对象的生命周期是由shared_ptr的持有者决定的,所以对象本身不能决定它是否要消亡。如果你这样做,你会得到双倍的当最后一个 shared_ptr 死亡时删除。我能提供的唯一解决方案是“重新考虑你的设计”(你可能一开始就不需要 shared_ptr,导弹可能是值或池化对象)。

关于c++ - "delete this"到一个用 std::shared_ptr 分配的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271193/

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