当前位置: 首页 > 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;
};

http://www.mrgr.cn/news/38321.html

相关文章:

  • 从零开始手写STL库:multimap
  • 电子连接器信号完整性仿真实训教程 一
  • 【C++】C/C++内存管理(new/delete)
  • 《开题报告》基于SSM框架的电影评论网站的设计与实现源码++学习文档+答辩讲解视频
  • 胤娲科技:AI界的超级充电宝——忆阻器如何让LLM告别电量焦虑
  • Linux用户管理
  • 模拟实战数据落地:MSsql通过存储过程获得销售数据视图
  • 如何存储你需要的信息:变量——WEB开发系列42
  • 【算法系列-数组】长度最小的子数组(滑动窗口)
  • lDE 使用技巧与插件推荐(含案例说明)
  • 如何评估婚恋交友小程序的投资回报率
  • 小阿轩yx-案例:代码管理系统简介与部署
  • 数据结构与算法——Java实现 21.栈
  • 数据结构——二叉树的性质和存储结构
  • 干货|CNAS-CL01设备部分解读,透彻掌握软件测试实验室设备关键点
  • 探索后量子安全:基于格加密技术的未来密码学展望
  • Goland使用SSH远程Linux进行断点调试 (兼容私有库)
  • 高等数学 第11讲 多元函数偏导数的计算与应用_复合函数求偏导_隐函数求偏导_条件极值
  • 计算机毕业设计Python+Spark知识图谱微博舆情预测 微博推荐系统 微博可视化 微博数据分析 微博大数据 微博爬虫 Hadoop 大数据毕业设计
  • AI在教育行业应用的启发和未来的方向