gpt4 book ai didi

c++ - boost::weak_ptr 与自定义删除器的交互

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

我有一个带有自定义删除器的 boost::shared_ptr。将其转换为 weak_ptr 时删除者信息丢失了吗?如果是,我如何将相同的删除器重新附加到 shared_ptr - 从 weak_ptr::lock() 方法获取的?

我正在实现的功能是 weak_ptr 的容器,指向某种类型的事件实例。我需要自定义删除器来删除要删除的对象的容器条目。

最佳答案

不,自定义删除器永远不会丢失。

当您lock() 您的weak_ptr 时,您会重新获得一个shared_ptr,它具有与您使用的相同的自定义删除器(和其他属性)从一开始就创建 weak_ptr

但是,如果不再有 shared_ptr 引用您的 weak_ptrlock() 将失败并返回一个空的 shared_ptr.

也就是说,您不必关心自定义删除器。如果您在 shared_ptr 创建时指定它,它将在最后一个相关的 shared_ptr 被释放时被调用。

关于c++ - boost::weak_ptr 与自定义删除器的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3615421/

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