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

【QT中的一些高级数据结构,持续更新中...】

QT中有一些很精妙、便捷的设计,在了解这些数据的同时,我们可以学到如何更好的设计代码。本贴持续更新中,欢迎关注和收藏

  • 一 QScopedPointer
    • 主要特点:
    • 示例代码
  • 二 Q_DISABLE_COPY

一 QScopedPointer

QScopedPointer 是 Qt 中的一种智能指针,它的主要作用是管理动态分配的内存,确保在指针离开作用域时自动释放内存,从而避免内存泄漏。

主要特点:

  • 自动内存管理:
    QScopedPointer 在作用域结束时自动销毁所指向的对象,调用其析构函数并释放内存。这样可以确保无论正常退出作用域,还是通过异常退出作用域,都会自动释放资源,减少内存泄漏的风险。

  • 无拷贝构造函数:
    QScopedPointer 不允许拷贝构造和拷贝赋值操作,因此它的所有权是独占的。这个特性确保了不会意外地复制指针,避免了重复删除相同内存的风险。

  • 使用场景:
    适用于需要自动管理堆上对象生命周期的情况,特别是在不需要共享所有权的场景中。

示例代码

#include <QScopedPointer>
#include <QDebug>

class MyClass {
public:
    MyClass() {
        qDebug() << "MyClass created";
    }
    ~MyClass() {
        qDebug() << "MyClass destroyed";
    }
};

int main() {
    {
        QScopedPointer<MyClass> ptr(new MyClass);
        // ptr 的作用域结束后会自动调用析构函数
    } // 离开作用域,MyClass 对象会被销毁

    return 0;
}

二 Q_DISABLE_COPY

Q_DISABLE_COPY(MarkerPointRecognitionPage);

显式禁用拷贝构造函数和赋值运算符。
这意味着 MarkerPointRecognitionPage 类不能被拷贝或赋值,这是一个非常好的做法,尤其是当类内部有指针成员(如 QScopedPointer)时,拷贝操作通常会导致浅拷贝或资源管理上的问题。


http://www.kler.cn/a/556376.html

相关文章:

  • 汽车智能制造企业数字化转型SAP解决方案总结
  • Redis数据结构总结-listPack
  • OpenMetadata MySQL数据质量治理实现分析
  • 【Alertmanager】alertmanager告警多种通知方式--企业微信告警、钉钉告警、电话和短信告警
  • 【Java高级篇】——第15篇:深入探讨Spring Boot与微服务架构
  • Java八股文(下)
  • 从零开始玩转TensorFlow:小明的机器学习故事 2
  • scala中为什么能用常量的地方就不用变量
  • Git配置个人和公司的提交信息,通过‘目录配置‘
  • go.mod 里的 toolchain 怎么去掉
  • DuodooBMS源码解读之 odoo_phoenix_alarm模块
  • Redis数据结构-String字符串
  • npm/pnpm软链接
  • JUC并发—8.并发安全集合二
  • 安全运维,等保测试常见解决问题。
  • HarmonyOS学习第2天: 解锁语言与框架的无限可能
  • 抓包工具 wireshark
  • Python项目源码34:网页内容提取工具1.0(Tkinter+requests+html2text)
  • Java集合框架之List接口详解
  • 新数据结构(12)——代理