首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C/C++ Qt shared_ptr | make_shared | QSharedPointer 】绕圈圈

【C/C++ Qt shared_ptr | make_shared | QSharedPointer 】绕圈圈

作者头像
用户12006525
发布2026-01-23 18:51:41
发布2026-01-23 18:51:41
320
举报
  1. Qt::make_sharedstd::make_shared
    • 这两个函数都用于创建共享智能指针,但它们属于不同的命名空间,分别用于 Qt 和标准 C++ 库。
    • Qt::make_shared 实际上是一个宏,它在 Qt5.15 版本中被弃用,并在 Qt6 中移除了。在 Qt5.15 之前的版本中,Qt::make_shared 用于创建 QSharedPointer
    • std::make_shared 是 C++ 标准库的一部分,用于创建 std::shared_ptr
  2. std::shared_ptrQSharedPointer
    • 这两个类模板都实现了共享所有权的智能指针,它们通过引用计数来管理对象的生命周期。
    • std::shared_ptr 是 C++11 引入的标准库智能指针,适用于所有 C++ 程序。
    • QSharedPointer 是 Qt 框架的一部分,它与 std::shared_ptr 有类似的功能,但可能在某些方面与 Qt 的其他特性(如父子关系和信号槽机制)更好地集成。
  3. 命名空间和使用场景
    • 命名空间确实不同,std::shared_ptr 位于 std 命名空间中,而 QSharedPointer 位于 Qt 的命名空间中。
    • 使用场景不同,std::shared_ptr 通常用于标准 C++ 代码中,而 QSharedPointer 用于 Qt 应用程序中,特别是当需要与 Qt 的对象树和事件系统交互时。
  4. 本质
    • 虽然它们的本质都是实现共享所有权的智能指针,但它们的实现细节可能有所不同,特别是在与各自框架的其他部分集成方面。

总结来说,Qt::make_shared 在较新版本的 Qt 中已经不再推荐使用,而 std::make_shared 用于创建 std::shared_ptrstd::shared_ptrQSharedPointer 在功能上相似,但它们分别属于不同的库,并且在某些特定场景下可能更适合使用其中一个。在 Qt 应用程序中,通常推荐使用 QSharedPointer,因为它可能更好地与 Qt 的其他特性集成。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档