news 2026/4/23 14:47:46

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/23 13:12:46

Xournal++跨平台手写笔记软件安装与优化全攻略

Xournal跨平台手写笔记软件安装与优化全攻略 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen inp…

作者头像 李华
网站建设 2026/4/23 14:31:33

抖音批量下载神器:5大场景让内容收集效率提升10倍

抖音批量下载神器&#xff1a;5大场景让内容收集效率提升10倍 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为优质内容稍纵即逝而苦恼&#xff1f;当我们遇到心仪的创作者&#xff0c;想要完整保存TA的…

作者头像 李华
网站建设 2026/4/8 12:51:49

终极视频下载攻略:轻松保存全网流媒体资源

终极视频下载攻略&#xff1a;轻松保存全网流媒体资源 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 还在为无法下载网页视频而烦恼吗&#…

作者头像 李华
网站建设 2026/4/23 13:13:48

ComfyUI-Impact-Pack项目SAM模型加载失败:完整修复指南

ComfyUI-Impact-Pack项目SAM模型加载失败&#xff1a;完整修复指南 【免费下载链接】ComfyUI-Impact-Pack 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Impact-Pack 当你在使用ComfyUI-Impact-Pack进行图像处理时&#xff0c;突然遇到SAM模型加载失败的问题&…

作者头像 李华
网站建设 2026/4/23 14:42:25

Xournal++完全指南:零基础掌握跨平台手写笔记神器

Xournal完全指南&#xff1a;零基础掌握跨平台手写笔记神器 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Su…

作者头像 李华
网站建设 2026/4/23 14:40:18

零失败Z-Image入门:3个云端预设工作流合集

零失败Z-Image入门&#xff1a;3个云端预设工作流合集 引言&#xff1a;为什么选择云端Z-Image工作流&#xff1f; 还在为本地部署Z-Image失败而烦恼吗&#xff1f;本文将带你体验3种云端预设工作流&#xff0c;无需复杂配置就能实现文生图、图生图和风格迁移。就像使用手机A…

作者头像 李华