news 2026/9/2 22:15:22

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/8/26 19:37:38

AI手势识别适合中小企业吗?低成本部署实操手册

AI手势识别适合中小企业吗&#xff1f;低成本部署实操手册 1. 引言&#xff1a;AI手势识别的商业价值与落地挑战 随着人机交互技术的演进&#xff0c;AI手势识别正从实验室走向真实商业场景。对于资源有限的中小企业而言&#xff0c;这项技术是否具备可落地性&#xff1f;答案…

作者头像 李华
网站建设 2026/8/31 8:52:47

5分钟掌握Forza Mods AIO:新手也能轻松上手的游戏修改神器

5分钟掌握Forza Mods AIO&#xff1a;新手也能轻松上手的游戏修改神器 【免费下载链接】Forza-Mods-AIO Free and open-source FH4, FH5 & FM8 mod tool 项目地址: https://gitcode.com/gh_mirrors/fo/Forza-Mods-AIO Forza Mods AIO作为一款专为《极限竞速》系列游…

作者头像 李华
网站建设 2026/8/27 2:18:18

ComfyUI Load Image Batch节点故障深度解析:从架构原理到实践修复

ComfyUI Load Image Batch节点故障深度解析&#xff1a;从架构原理到实践修复 【免费下载链接】was-node-suite-comfyui An extensive node suite for ComfyUI with over 190 new nodes 项目地址: https://gitcode.com/gh_mirrors/wa/was-node-suite-comfyui 当你沉浸在…

作者头像 李华
网站建设 2026/9/2 21:24:28

TFT游戏助手:云顶之弈装备合成与阵容分析的终极解决方案

TFT游戏助手&#xff1a;云顶之弈装备合成与阵容分析的终极解决方案 【免费下载链接】TFT-Overlay Overlay for Teamfight Tactics 项目地址: https://gitcode.com/gh_mirrors/tf/TFT-Overlay 还在为云顶之弈中复杂的装备合成规则而烦恼吗&#xff1f;每次选秀时面对众多…

作者头像 李华
网站建设 2026/9/2 22:13:55

【企业级API适配架构设计】:资深架构师亲授7种高可用适配模式

第一章&#xff1a;跨平台API接口适配的核心挑战 在现代分布式系统架构中&#xff0c;跨平台API接口适配已成为连接异构服务的关键环节。不同平台在数据格式、认证机制、通信协议等方面存在显著差异&#xff0c;导致接口集成复杂度上升。 数据结构与格式不一致 各平台常采用不…

作者头像 李华
网站建设 2026/8/29 14:17:30

10分钟掌握MyKeymap:打造专属智能键盘配置的完整教程

10分钟掌握MyKeymap&#xff1a;打造专属智能键盘配置的完整教程 【免费下载链接】MyKeymap 一款基于 AutoHotkey 的键盘映射工具 项目地址: https://gitcode.com/gh_mirrors/my/MyKeymap 还在为不同软件中快捷键冲突而烦恼吗&#xff1f;是否经常遇到Photoshop的快捷键…

作者头像 李华