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

Qt 智能指针

Qt 中智能指针包括:

  • QSharedPointer ----> std::shared_ptr 引用计数

多个线程同时修改 QSharedPointer 指向的数据时还要应该考虑 加锁

  • QScopedPointer ----> std::uniq_ptr 独占
  • QScopedArrayPointer
  • QWeakPointer ----> std::weak_ptr 弱引用计数
  • QPointer

用于指向 QObject 及派生类的对象。当一个 QObject 或派生类对象被删除后,QPointer 能自动把其内部的指针设为 0
当QPointer 对象超出作用域时,并不会删除它指向的内存对象。这和其他的智能指针是不同的

  • QSharedDataPointer ----> 实现数据的隐式共享(写时复制 copy-on-write))
  • QExplicitlySharedDataPointer -->同上,但是它禁用了写时复制功能
class EmployeeData : public QSharedData {
public:EmployeeData() : id(-1) { }EmployeeData(const EmployeeData &other): QSharedData(other), id(other.id), name(other.name) {}//要隐式共享和写时拷贝的数据int id;QString name;
};
class Employee {
public:Employee() { d = new EmployeeData; }Employee(const Employee &other) : d (other.d) {}Employee(int id, const QString &name) {d = new EmployeeData;setId(id);setName(name);}Employee(const Employee &other) : d (other.d){}void setId(int id) { d->id = id; }int id() const { return d->id; }void setName(const QString &name) { d->name = name; }QString name() const { return d->name; }private:// 把需要隐式共享的数据(id,name)封装到另一个类中QSharedDataPointer<EmployeeData> d;
};

相关文章:

  • 探索 DaPy:Python 中的 AI 数据处理新贵
  • GEE APP:实现在线计算全球任何区域森林年度损失可视化应用
  • 深入探讨AI 神经网络:类型、特点与创新应用
  • Vue3动态导入后端路由
  • EasyExcel全面实战:掌握多样化的Excel导出能力
  • 华为OD真题机试-英文输入法(Java)
  • 滚雪球学MySQL[8.1讲]:MySQL扩展功能
  • centos7.9使用docker容器方式部署jenkins环境
  • HanLP词性标注集
  • 初识ZYNQ——FPGA学习笔记15
  • Spring Boot 实现动态配置导出,同时支持公式和动态下拉框渲染和性能优化案例示范
  • 一起发现CMake太美-02-CMake是什么CMake的运行原理
  • Docker官网新手入门教程:从零开始玩转容器
  • dea插件开发-自定义语言9-Rename Refactoring
  • SpringBoot实战:构建学科竞赛管理系统
  • [NodeJS] 关于Buffer
  • egg(89)--egg之redis的发布和订阅
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • PAT A1017 优先队列
  • React Transition Group -- Transition 组件
  • react 代码优化(一) ——事件处理
  • vue.js框架原理浅析
  • Vue2 SSR 的优化之旅
  • 闭包,sync使用细节
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 基于webpack 的 vue 多页架构
  • 你真的知道 == 和 equals 的区别吗?
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 事件委托的小应用
  • 我与Jetbrains的这些年
  • 正则学习笔记
  • 最简单的无缝轮播
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # Apache SeaTunnel 究竟是什么?
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (4.10~4.16)
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (第30天)二叉树阶段总结
  • (分布式缓存)Redis分片集群
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (函数)颠倒字符串顺序(C语言)
  • (剑指Offer)面试题34:丑数
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (七)glDrawArry绘制
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四) 虚拟摄像头vivi体验
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)