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

【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.mrgr.cn/news/58836.html

相关文章:

  • 英语语法学习框架(考研)
  • 网络连接设备的功能与应用概述
  • 论文笔记(五十)Segmentation-driven 6D Object Pose Estimation
  • HTTP和HTTPS基本概念,主要区别,应用场景
  • ETCD未授权访问风险基于角色认证和启用https的ca证书修复方案
  • paypal设置sandbox沙盒测试账号
  • vue3学习(一)项目搭建
  • Depcheck——专门用于检测 JavaScript 和 Node.js 项目中未使用依赖项的工具
  • 自然语言处理实战:《七剑下天山》文本分析
  • Github关于LLM热门项目(10k+)
  • WebForms DataList 控件深入解析
  • Matlab数字信号处理——基于改进小波变换的图像去噪方法(7种去噪算法)
  • 【C++】抱C++中的函数式编程:使用`std::function`和Lambda表达式简化代码
  • Next.js + Prisma + Auth.js 实现完整的认证方案
  • 一篇文章告诉你什么是BloomFilter
  • 【网络安全初识】——互联网发展史
  • 数据治理与主数据管理:现代企业数据管理的核心
  • 【软件工程】软件工程入门
  • 整合Mybatis-plus及最佳实践
  • 聊聊Web3D 发展趋势
  • app头部氛围该如何设计,这里有50个示例
  • GLM-4-Voice:智谱AI的端到端中英语音对话模型
  • 基于SSM农业信息管理系统的设计l
  • unity开发之绳子制作 obi rope
  • 系统架构设计师教程 第2章 2.3 计算机软件 笔记
  • 【动态规划】回文串问题