news 2026/4/20 7:21:31

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/4/18 8:17:56

TFT游戏助手评测:云顶之弈玩家的智能战术决策系统

TFT游戏助手评测&#xff1a;云顶之弈玩家的智能战术决策系统 【免费下载链接】TFT-Overlay Overlay for Teamfight Tactics 项目地址: https://gitcode.com/gh_mirrors/tf/TFT-Overlay 在云顶之弈这款策略自走棋游戏中&#xff0c;装备合成、羁绊搭配和经济运营是决定胜…

作者头像 李华
网站建设 2026/4/18 5:24:58

智能象棋助手完整指南:3步掌握AI对弈核心技术

智能象棋助手完整指南&#xff1a;3步掌握AI对弈核心技术 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 还在为象棋对局中的复杂决策而困扰吗&#xff1f…

作者头像 李华
网站建设 2026/4/17 20:58:13

终极Perseus补丁指南:轻松解锁碧蓝航线全皮肤功能

终极Perseus补丁指南&#xff1a;轻松解锁碧蓝航线全皮肤功能 【免费下载链接】Perseus Azur Lane scripts patcher. 项目地址: https://gitcode.com/gh_mirrors/pers/Perseus 还在为碧蓝航线游戏更新导致辅助工具频繁失效而烦恼吗&#xff1f;Perseus游戏补丁以其独特的…

作者头像 李华
网站建设 2026/4/18 4:51:04

MediaPipe Hands彩虹骨骼版:手部关键点检测代码实例

MediaPipe Hands彩虹骨骼版&#xff1a;手部关键点检测代码实例 1. 引言&#xff1a;AI 手势识别与追踪 随着人机交互技术的不断发展&#xff0c;手势识别正逐渐成为智能设备、虚拟现实、增强现实乃至智能家居的核心感知能力之一。相比传统的触控或语音输入&#xff0c;手势操…

作者头像 李华
网站建设 2026/4/18 10:05:33

终极跨平台Visio文件转换指南:5分钟搞定VSDX导入

终极跨平台Visio文件转换指南&#xff1a;5分钟搞定VSDX导入 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 还在为Windows独占的Visio文件而烦恼吗&#xff1f;drawio-desktop…

作者头像 李华
网站建设 2026/4/18 13:35:08

人体骨骼检测保姆级教程:云端GPU零配置,3步搞定部署

人体骨骼检测保姆级教程&#xff1a;云端GPU零配置&#xff0c;3步搞定部署 引言&#xff1a;为什么健身教练需要骨骼检测技术&#xff1f; 作为健身教练&#xff0c;你是否遇到过这些困扰&#xff1a;学员做深蹲时膝盖内扣却难以实时发现&#xff1f;平板支撑时腰部塌陷需要…

作者头像 李华