news 2026/3/15 3:49:33

7.构造函数的白话解释

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7.构造函数的白话解释

先写一个通用的类和构造函数:

#define TEMP_FILTER_WINDOW_SIZE 10 // 包含必要的头文件(Qt线程、C++标准库) #include <QThread> #include <QObject> #include <algorithm> // 用于std::fill_n // 定义温度采集线程类,继承自Qt的QThread class TempWorkerThread : public QThread { // Qt的信号槽机制需要这个宏 Q_OBJECT public: // 构造函数声明(和类名相同) explicit TempWorkerThread(QObject *parent = nullptr); private: // 类的成员变量(m_前缀是Qt/工业编程常用命名规范) int m_filterWindowSize; // 滤波窗口大小 bool m_isCollecting; // 是否正在采集温度 bool m_isPaused; // 是否暂停采集 int m_tempBufferIndices[8];// 温度缓冲区索引(8个通道) double m_baseTemp; // 基准温度值 };

上面这个类定义,:什么意思?

这个:的核心含义

在 C++ 的类定义中,类名 : 继承方式 父类名里的:继承语法的标志,作用是声明:当前类(子类 / 派生类)继承了另一个类(父类 / 基类)的属性和方法

对应到class TempWorkerThread : public QThread

  • TempWorkerThread:你自定义的子类(也叫派生类);
  • ::继承标志,读作 “继承自”;
  • public公有继承(继承方式),是最常用的一种;
  • QThread:Qt 提供的父类(也叫基类),是线程相关的核心类。

整行代码的意思是:TempWorkerThread这个类公有继承QThread类,它可以使用QThread里的公有 / 保护成员(比如start()wait()方法,run()虚函数等),同时还能扩展自己的功能。

类定义OK后,写构造函数:

// 构造函数的声明:属于TempWorkerThread类,参数是QObject类型的父对象指针 TempWorkerThread::TempWorkerThread(QObject *parent) // 初始化列表:调用父类构造函数 + 初始化所有成员变量 : QThread(parent), // 调用父类QThread的构造函数,传递父对象 m_filterWindowSize(TEMP_FILTER_WINDOW_SIZE), // 初始化滤波窗口大小 m_isCollecting(false), // 初始状态:未采集 m_isPaused(false), // 初始状态:未暂停 m_baseTemp(25.0) // 基准温度初始化为25℃ { // 构造函数体:初始化8个温度缓冲区索引为0 // std::fill_n:把m_tempBufferIndices数组的前8个元素全部设为0 std::fill_n(m_tempBufferIndices, 8, 0); }

::什么意思,:又是什么意思?

代码核心部分解释

1. ::含义
  • TempWorkerThread::TempWorkerThread::作用域解析符,明确这个构造函数属于TempWorkerThread类;
  • 构造函数后的::初始化列表,先于函数体执行,负责:
    • 调用父类QThread(parent):因为子类继承了 QThread,必须先初始化父类;
    • 给所有成员变量赋初始值(比如m_baseTemp(25.0)),比在函数体里赋值更高效。
2. :含义

代码里: QThread(parent), m_filterWindowSize(TEMP_FILTER_WINDOW_SIZE), m_isCollecting(false), m_isPaused(false), m_baseTemp(25.0) 这部分的:,是 C++ 里构造函数特有的初始化列表语法,作用是:

  • 在构造函数体(大括号{}里的内容)执行之前,先初始化类的成员变量、或者调用父类的构造函数
  • 比在构造函数体里赋值更高效,也是 C++ 的最佳实践。
  • QThread(parent):因为TempWorkerThread继承了 Qt 的QThread类(线程类),所以创建子类对象时,必须先初始化父类,这是 C++ 继承的规则;
  • m_开头的变量是类的成员变量(属于这个类的 “属性”),是编程里的命名规范,方便识别;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/25 8:46:41

PyQt6完整指南:从零构建专业级桌面应用

PyQt6完整指南&#xff1a;从零构建专业级桌面应用 【免费下载链接】PyQt-Chinese-tutorial PyQt6中文教程 项目地址: https://gitcode.com/gh_mirrors/py/PyQt-Chinese-tutorial 掌握PyQt6是进入GUI开发领域的理想起点&#xff0c;这个强大的Python框架能够让你快速创建…

作者头像 李华
网站建设 2026/3/14 7:39:24

MediaPipe Hands部署指南:CPU极速版手部识别参数详解

MediaPipe Hands部署指南&#xff1a;CPU极速版手部识别参数详解 1. 引言 1.1 AI 手势识别与追踪 在人机交互、虚拟现实、智能监控和手势控制等前沿技术领域&#xff0c;手部关键点检测正成为一项核心能力。通过精准定位手指关节的2D/3D坐标&#xff0c;系统可以理解用户的手…

作者头像 李华
网站建设 2026/3/3 18:22:37

终极解决方案:让你的Xbox 360手柄在macOS上完美运行

终极解决方案&#xff1a;让你的Xbox 360手柄在macOS上完美运行 【免费下载链接】360Controller 项目地址: https://gitcode.com/gh_mirrors/36/360Controller 还在为Xbox 360手柄在Mac上无法使用而烦恼吗&#xff1f;别担心&#xff0c;360Controller驱动程序就是你的…

作者头像 李华
网站建设 2026/3/12 19:43:33

【.NET高级开发必修课】:自定义集合表达式扩展的3个关键场景

第一章&#xff1a;自定义集合表达式扩展的核心价值在现代软件开发中&#xff0c;数据处理的灵活性与表达能力成为衡量框架成熟度的重要指标。自定义集合表达式扩展通过赋予开发者编写可复用、可组合的数据查询逻辑的能力&#xff0c;显著提升了代码的可读性与维护性。这类扩展…

作者头像 李华
网站建设 2026/3/14 7:03:51

MPC-BE万能播放器:解锁高清视频播放的全新境界

MPC-BE万能播放器&#xff1a;解锁高清视频播放的全新境界 【免费下载链接】MPC-BE MPC-BE – универсальный проигрыватель аудио и видеофайлов для операционной системы Windows. 项目地址: https://g…

作者头像 李华
网站建设 2026/3/14 18:45:35

深度解析Stretchly:人体工效学与数字健康管理的技术实现

深度解析Stretchly&#xff1a;人体工效学与数字健康管理的技术实现 【免费下载链接】stretchly The break time reminder app 项目地址: https://gitcode.com/gh_mirrors/st/stretchly 在数字化工作环境日益普及的今天&#xff0c;长时间屏幕暴露已成为现代职业人群面临…

作者头像 李华