当前位置: 首页 > article >正文

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

  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 的其他特性集成。


http://www.kler.cn/news/365814.html

相关文章:

  • 软件测试人员必问的十大面试题..
  • fpga系列 HDL: 竞争和冒险 01
  • 力扣143:重排链表
  • 基于vue框架的的电子商务网站68pwt(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 基于springboot企业微信SCRM管理系统源码带本地搭建教程
  • 当有违法数据时,浏览器不解析,返回了undefined,导致数据不解析
  • [Redis] Redis数据持久化
  • [项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引
  • Element 的Table表格实现列合并(记得先排序、element-plus、列合并、线上已投入使用)
  • 同标签实现监听LocalStorage
  • python的文件常识
  • CTF-RE 从0到N:开始之前-c函数手册
  • 什么样的JSON编辑器才好用
  • TDengine 签约新奥新智:写入速度提升10倍,成本降低90%
  • 软件设计师----UML
  • JavaWeb合集16-JWT令牌验证
  • Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)
  • 【Sublime Text】设置中文 最新最详细
  • 【Android】Convenient ADB Commands
  • jupyter notebook改变默认启动路径
  • C++:map和set类
  • SQLITE排序
  • Vision Transformer 神经网络在水果、动物、血细胞上的应用【深度学习、PyTorch、图像分类】
  • 【web安全】缓慢的HTTP拒绝服务攻击详解
  • 从零开始:Python与Jupyter Notebook中的数据可视化之旅
  • 从PDF文件中提取数据