首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在删除对象时调用处理程序的弱智能指针?

在删除对象时调用处理程序的弱智能指针?
EN

Stack Overflow用户
提问于 2021-07-15 09:52:13
回答 1查看 84关注 0票数 1

我感到惊讶的是,使用std::weak_ptr的人并不认为将onDelete处理程序绑定到他们的引用是有用的。我在boost上到处寻找,但我没有找到这样的东西。

我是不是遗漏了什么?“臭味”依赖于这样的东西吗?或者出于某种原因,它太小众而不能普遍使用?

EN

回答 1

Stack Overflow用户

发布于 2021-07-15 13:42:06

shared_ptr的实现基本上只是一个指针和一个原子引用计数,创建和销毁shared_ptr实例只涉及递增和递减引用计数,因此非常快,并且不需要互斥锁。

为了实现您的方案,shared_ptr将需要以某种方式跟踪所有weak_ptr实例,这将使其更昂贵,并可能需要互斥锁,因为这不是一个广泛需要的要求,它不值得成本。

你可以在你的shared_ptr上使用一个自定义的删除器,当创建你的weak_ptr时,使用get_deleter来访问删除器并向它注册一个回调。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68386926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档