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

【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.lryc.cn/news/540966.html

相关文章:

  • 简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
  • 《95015网络安全应急响应分析报告(2024)》
  • TensorFlow v2.16 Overview
  • Udp发送和接收数据(python和QT)
  • element-plus 根据条件显示多选框
  • Ubuntu 22.04 Install deepseek
  • DeepSeek赋能智慧文旅:新一代解决方案,重构文旅发展的底层逻辑
  • 小程序的分包
  • RTSP场景下RTP协议详解及音视频打包全流程
  • 使用API有效率地管理Dynadot域名,为域名部署DNS安全拓展(DNSSEC)
  • 如何基于transformers库通过训练Qwen/DeepSeek模型的传统分类能力实现文本分类任务
  • 开源一款I2C电机驱动扩展板-FreakStudio多米诺系列
  • FFmpeg+WebSocket+JsMpeg实时视频流实现方案
  • 【Linux】Linux 文件系统—— 探讨软链接(symbolic link)
  • 排序与算法:插入排序
  • HashMap 详解
  • DAY07 Collection、Iterator、泛型、数据结构
  • 计算机网络之物理层——基于《计算机网络》谢希仁第八版
  • 简讯:Rust 2024 edition and v1.85.0 已发布
  • DeepSeek写俄罗斯方块手机小游戏
  • uniapp中引入Vant Weapp的保姆级教学(包含错误处理)
  • 【Python爬虫(20)】解锁Python爬虫数据存储秘籍:文件存储全攻略
  • 关于Unity的一些基础知识点汇总
  • SpringCould+vue3项目的后台用户管理的CURD【Taurus教育平台】
  • 功能说明并准备静态结构
  • solidity之Foundry安装配置(一)
  • 请解释 Vue 中的生命周期钩子,不同阶段触发的钩子函数及其用途是什么?
  • C#上位机--选择语句(switch)
  • Hadoop初体验
  • 在vue2中操作数组,如何保证其视图的响应式