QT第24节课程笔记 - 静态成员变量/函数

Qt开发之路48---类的静态成员(static) 一:关键词static声明静态成员 类的静态成员与类直接相关,而不是与类的各个对象相关; 直接捆绑在类上; 静态成员不含this指针; 不能用const 二:定义静态成员变量 静态成员由于不属于类的任意一个对象,所以不是在创建类的对象时被定义,一般来说,不在类内部初始化静态成员。 如下,在类MyWidget 中定义静态成员 length: 在mywidegt.h中声明static double length,在mywidegt.cpp文件上方初始化double MyWidget::length = 10 阅读详情

2.9 静态成员

2.9.1 静态成员的定义

静态成员在C++类中是一个重要的概念,它包括静态成员变量和静态成员函数。静态成员的特点和存在的意义如下:

静态成员变量

  1. 定义:静态成员变量是类的所有对象共享的变量。与普通成员变量相比,无论创建了多少个类的实例,静态成员变量只有一份拷贝。
  2. 初始化:静态成员变量需要在类外进行初始化,通常在类的实现文件中。
  3. 访问:静态成员变量可以通过类名直接访问,不需要创建类的对象。也可以通过类的对象访问。
  4. 用途:常用于存储类级别的信息(例如,计数类的实例数量)或全局数据需要被类的所有实例共享。

静态成员函数

  1. 定义:静态成员函数是可以不依赖于类的实例而被调用的函数。它不能访问类的非静态成员变量和非静态成员函数。
  2. 访问:类似于静态成员变量,静态成员函数可以通过类名直接调用,也可以通过类的实例调用。
  3. 用途:常用于实现与具体对象无关的功能,或访问静态成员变量。

示例代码

class MyClass {
public:
    static int staticValue; // 静态成员变量

    MyClass() {
        // 每创建一个对象,静态变量增加1
        staticValue++;
    }

    static int getStaticValue() {
        // 静态成员函数
        return staticValue;
    }
};

// 类外初始化静态成员变量
int MyClass::staticValue = 0;

int main() {
    MyClass obj1, obj2;
    std::cout << MyClass::getStaticValue(); // 输出2
}

存在的意义

  • 共享数据:允许对象之间共享数据,而不需要每个对象都有一份拷贝。
  • 节省内存:对于频繁使用的类,使用静态成员可以节省内存。
  • 独立于对象的功能:静态成员函数提供了一种在不创建对象的情况下执行操作的方法,这对于实现工具函数或管理类级别状态很有用。

2.9.2 静态成员变量的作用

静态成员变量在C++中的一个典型应用是用于跟踪类的实例数量。这个案例体现了静态成员变量的特性:它们在类的所有实例之间共享,因此适合于存储所有实例共有的信息。

下面是一个示例,展示了如何使用静态成员变量来计数一个类的实例数量:

#include <iostream>

using namespace std;

class Myclass{

private:
    static int staticNumofInstance;

public:
    Myclass(){
        staticNumofInstance++;
    }

    ~Myclass(){
        staticNumofInstance--;
    }

    static int getNunofInstance(){
        return staticNumofInstance;
    }
};

int Myclass::staticNumofInstance = 0;

int main()
{
    Myclass m1;
    cout << Myclass::getNunofInstance() << endl;
    Myclass m2;
    cout << m2.getNunofInstance() << endl;

    {
        Myclass m3;
        cout << Myclass::getNunofInstance() << endl;
        Myclass m4;
        cout << Myclass::getNunofInstance() << endl;
    }
    cout << Myclass::getNunofInstance() << endl;
    Myclass *m5 = new Myclass;
    cout << Myclass::getNunofInstance() << endl;
    delete m5;
    cout << Myclass::getNunofInstance() << endl;
    return 0;
}

在这个例子中:

  • Myclass 类有一个静态成员变量 staticNumofInstance,用来跟踪该类的实例数量。
  • 每当创建 Myclass 的新实例时,构造函数会增加 staticNumofInstance。
  • 每当一个 Myclass 实例被销毁时,析构函数会减少 staticNumofInstance。
  • 通过静态成员函数 getNunofInstance 可以随时获取当前的实例数量。
  • 静态成员变量 staticNumofInstance 在类外初始化为0。

这个案例展示了静态成员变量如何在类的所有实例之间共享,并为所有实例提供了一个共同的状态(在这个例子中是实例的数量)。这种技术在需要跟踪对象数量或实现某种形式的资源管理时特别有用。

Qt 静态回调函数访问类成员变量解决办法 Qt 静态回调函数访问类成员变量解决办法 总结起来就是: 定义一个静态指针pThis,构造函数中将其指向this指针. 代码示例: 头文件: #ifndef TEST_H #define TEST_H #include &lt;QtWidgets/QMainWindow&gt; #include "ui_test.h" #if defined _WIN32 || define... 阅读详情

相关推荐

C++静态成员

 类中的静态成员真是个让人爱恨交加的特性。我曾经在面试时,被主考官抓住这个问题一阵穷追猛打,直把我问的面红耳赤,败下阵来。所以回来之后,我痛定思痛,决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分。 一 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据

xzdwfwt111的专栏 1316

Qt中静态变量使用方法

静态变量可以在各个页面之前使用 先定义一个用于存放静态变量的类 例如datavar 在datavar.h中添加如下代码 #ifndef DATAVAR_H #define DATAVAR_H #include class dataVar : public QObject { Q_OBJECT public: explicit dataVar(QObject *paren

xiaoazhang0的博客 1万+

ubuntu-24.04.1-desktop 中的 QT6.7 QtCreator 中集成 log4qt

地址:https://github.com/MEONMedical/Log4Qt 源码位置:log4qt 库的src目录下的log4qt文件夹 我是通过共享文件夹将Wiindows下的源码复制到 ubuntu 中的 network : 提供网络功能 concurrent : 提供多线程和并发编程的支持 3.2.2 静态链接 Log4Qt 告诉编译器,我们是用静态链接的方法将Log4Qt 库的代码编译并链接到最终的可执行文件中 3.2.3 设置 LOG4QTSRCPATH $$PWD 是一

weixin_41245990的博客 1122

Qt Creator静态成员变量、全局变量、静态成员函数。

Qt Creator静态成员变量、全局变量、静态成员函数

ken2232的博客 1838

ubuntu-24.04.1-desktop 中安装 QT6.7

确保在 Ubuntu 上安装了与 Windows 上相同或兼容版本的 Qt 和 Qt Creator。你可以从 Qt 官网下载适用于 Linux 的安装包,或者使用包管理器安装。注意:重新安装时,要清除缓存,点击左下角红框里的按钮选择第三个选项,点击清除缓存。安装 libxcb-cursor0 和 libxcb-cursor-dev。保存到ubuntu的共享文件目录中:E:\work\lzc\share。Linux系统:ubuntu-24.04.1-desktop。注意:QT6.7 的安装目录。

weixin_41245990的博客 1658

QT安装心得2018-3-24

91arm阶段三的课程用到了QT集成开发安装包(qt-sdk-linux-x86-opensource-2010.01.bin),但没有给下载方法。在网上也找不到,经查看各位博友的文章,总结如下:1.集成的QT及QT Creator安装比较easy,课程就是这个安装方法。本文介绍的是QT和QT Create独立安装的方法,当然,也不是很难。首先说明一下:QT是一个类库,QTCreator是一个框架...

cumtzdlxm的博客 1661

Qt学习笔记第21到30讲

静态成员在C++类中是一个重要的概念,它包括静态成员变量和静态成员函数。静态成员的特点和存在的意义如下:静态成员变量1.定义:静态成员变量是类的所有对象共享的变量。与普通成员变量相比,无论创建了多少个类的实例,静态成员变量只有一份拷贝。2.初始化:静态成员变量需要在类外进行初始化,通常在类的实现文件中。3.访问:静态成员变量可以通过类名直接访问,不需要创建类的对象。也可以通过类的对象访问。4.用途:常用于存储类级别的信息(例如,计数类的实例数量)或全局数据需要被类的所有实例共。

qq_59757948的博客 1224

Qt6在Ubuntu24.04上的完整安装流程:从下载到配置

本文详细介绍了Qt6在Ubuntu24.04上的完整安装流程,包括环境准备、安装器获取与镜像加速、组件选择与依赖处理、开发环境验证与配置等关键步骤。针对国内开发者,特别提供了清华镜像源等加速方案,并解决了常见依赖问题,帮助开发者快速搭建高效的Qt6开发环境。

weixin_29251131的博客 395

Qt for android环境配置 24/3/27

总之小心点吧。3、JDK,SDK目录选择好了之后就SDK路径右边的那个。

qq_52885411的博客 1816

一生一芯 预学习阶段 NEMU代码学习(2)

如果 nemu_state.state == NEMU_ABORT:说明程序处于 "中止" 状态,输出 "ABORT",并且使用 ANSI_FG_RED 红色格式化显示。如果 halt_ret == 0,表示程序正常终止(触发了 "GOOD TRAP"),输出 "HIT GOOD TRAP",并使用 ANSI_FG_GREEN 绿色显示。如果要执行的指令数量 n 小于预定义的常量 MAX_INST_TO_PRINT,则将 g_print_step 置为 true,表示会逐步打印指令执行的过程。

weixin_45041054的博客 828

使用MID360在室内快速定位

在预构建的点云地图中实现实时3D全球定位。通过融合FAST-LIO的低频全局定位(约0.5~0.2Hz)和高频里程计,整个系统的计算效率很高。消除里程计的累计误差初始定位可以通过RVIZ的粗略手动估计或来自另一个传感器/算法的姿势来提供。

CTwinkle的博客 1164

QT第16节课程笔记-引用

因此,第一个声明可以读作 “r 是一个初始化为 i 的整型引用”,第二个声明可以读作 “s 是一个初始化为 d 的 double 型引用”。试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。在C语言中,一个数据对应一个内存,通过由一个变量名来访问这个内存空间的数据,叫做直接访问,相对直接访问,有个间接访问的说法,叫做指针。所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。

chenlichenforlinux21的博客 1062

统信UOS服务器上,达梦DM8数据库安装避坑全记录(附大小写敏感设置)

本文详细介绍了在统信UOS服务器版上部署达梦DM8数据库的全过程,包括环境准备、安装流程、数据库实例初始化及关键参数配置,特别是大小写敏感设置的注意事项。提供了从系统配置到性能优化的完整指南,帮助用户避免常见问题,确保数据库稳定运行。

weixin_30647423的博客 332

QT/C++告别新手系列之QT基础篇系列视频课程

QT/C++告别新手系列之QT基础篇系列视频课程

软希网分享源码的博客 1011

解决RK3566 USB OTG模式识别问题:从原理图分析到otg_mode文件操作全解析

本文深入解析RK3566 USB OTG模式识别问题,从硬件原理图设计到Linux内核的otg_mode文件操作,提供全面的调试方案。针对USB_OTG0_ID引脚电路设计、电源管理关联及内核驱动交互等关键点,给出实战调试技巧和常见问题解决方案,帮助开发者高效解决USB OTG模式切换难题。

eee77的博客 866

AutoSAR RTE调度机制揭秘:从定时器事件到Runnable执行的完整流程

本文深入解析了AutoSAR RTE(运行时环境)的核心调度机制,详细阐述了从定时器事件触发到Runnable(可运行实体)执行的完整流程。通过剖析Rte_Start()函数、OS任务与警报的交互,以及事件驱动循环,揭示了RTE如何作为幕后指挥家,高效、可靠地协调软件组件间的周期性任务执行,是打通AutoSAR应用开发的关键。

weixin_29169899的博客 228

实战Qt开发WordBN笔记软件#01 搭建开发环境:VS2019+Qt6.5+CMake+Git

课程目标:1 安装VS2019社区版本、Qt6.5.3版本、CMake和Git工具。

天恩软件工作室 1389

ArcGIS Pro新手避坑:从OpenStreetMap导入路网到创建拓扑关系全流程

本文详细解析了ArcGIS Pro中从OpenStreetMap导入路网数据到创建拓扑关系的全流程,涵盖OSM数据特性、几何完整性检查、属性强化及拓扑关系构建等关键步骤。特别针对路网数据预处理、网络数据集配置和常见问题提供了实用解决方案,帮助GIS新手高效完成网络分析任务。

weixin_33670786的博客 514

C++/Qt 计算24点

C++/Qt 计算24点 ​ 游戏的算法可描述如下:4个1-10的数字,用加、减、乘、除和括号把数子算成24,每个数字都必须使用到,且只能用一次。 ​ 用C++写会更加的方便: ​ 在这本书中要求了表达式中数字的顺序不能改变,所以在7.7节 中提供的算法不具有普遍适应性,但是算法的思路还是很简单并且清晰。不需要多动脑袋。在他的基础上,可以轻易的扩展成一般的算法。 一些比较难的24点计算 1 3 9 10 1 4 5 6 1 5 5 5 2 7 10 10 3 3 7 7 3 3

读书笔记 3423

FOC时序及电流采样注意事项

摘要:本文介绍了无刷电机FOC(磁场定向控制)的实现方法,重点解析了电流采样时序与PWM同步的关键技术。在S32K144平台上,需使用两个独立的ADC组件实现双路电流同步采样,采样时刻必须严格对应低边MOS管开启时间并位于PWM波形中央。文章详细说明了硬件触发时序设计、采样电阻配置原则,并通过示波器实测波形验证了电流反馈电路的正确性,指出正弦电流波形应是理想输出形态。关键点包括ADC-PWM时序同步、低边MOS采样及正确的PWM映射配置。

qq_40916548的博客 2626

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛

15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。

qq_42135020的博客 1087

24/1/10 qt work

如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面。“,并给出两个按钮Yes|No,用户迪纳基Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能。1. 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。

qinww2009的专栏 607

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Qt 作业 24/3/25

2>完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面如果用户点击取消按钮,则弹出一个问题对话框,给出信息”您是否确定要退出登录?要求:基于属性版和基于静态成员函数版至少各用一个。

2301_81317593的博客 946

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Qt24模型/视图

【代码】Qt24模型/视图。

weixin_41725706的博客 249

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

24/01/09 qt work

将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,则输出“登录成功”,并关闭该界面,如果匹配失败,则输出登录失败,并将密码框中的内容清空。1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数。

qinww2009的专栏 726

【最终方案】Ubuntu24遇到“Could not load the Qt platform plugin “xcb“ in “XXX““解决方法

通过上述两种解决方案,大多数开发者应该能够解决在Ubuntu 24的Conda虚拟环境中遇到的Qt平台插件加载失败的问题。如果问题仍然存在,建议检查Conda环境的配置,确保所有依赖项都已正确安装,并且版本兼容。希望这篇文章能帮助你顺利解决开发过程中遇到的难题!

Lismoon的博客 4241
上一篇: QT第23节课程笔记 - 析构函数
下一篇: QT第25-26节课程笔记 - 继承及分文件
上官可编程
博客等级 码龄14年 1398粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上官可编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值