0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++之静态成员变量和静态成员函数学习的总结

电子设计 ? 来源:电子设计 ? 作者:电子设计 ? 2020-12-24 17:12 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

不知不觉,又到周末了;上次在交流群里,答应给大家免费送开发板,一开始认为板子够送,但是昨天整理了一下,然后送了大概十几个网友就不够送了,还有十几个网友没得到板子,这里说声实在抱歉,下次有机会搞活动再送给大家好玩的板子:

上图的板子有最近买的,也有以前买的(stm32esp8266、51、eps32、小熊派、合宙的cat1、树莓派3b+);说实话,这些板子买来,一直放在那里吃灰,后期自己的方向也不玩硬件开发板啥的;所以上面的板子都送给了公众号读者在校生,让这些板子发挥它们最大的价值,板子也会在最近慢慢一一送出去;赠人与玫瑰,手有余香!

好了回归主题,今天继续分享c++的文章,学习还是不能落下,flag未完成,任务艰巨,好好学习。

一、静态成员变量:

平时我们在写类的时候,类中的成员变量,我们一般是通过对象名来访问public成员变量的,一般private(私有)的成员变量,对象是不能直接访问的;同时我们要明白每个对象的成员变量都是专属的,而且成员变量是不能在对象之间共享的,这就是专属性。下面我们来做一个小的程序需求来慢慢引出静态成员变量:

统计在程序运行期间某个类的对象数目

要保证该程序的安全性(不能使用全局变量)

随时可以获取当前对象的数目

代码版本一:

#include<stdio.h>classTest{private:intmCount;public:Test():mCount(0){mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}

运行结果:

root@txp-virtual-machine:/home/txp#./a.outmCount=1mCount=1mCount=1

从运行结果来我们可以看出来,对象独立性(专属性);而且结果没有达到我们的预期要求,于是乎,为了解决这个问题,我们就要排静态成员变量出场了。

1、c++中可以定义静态成员变量:

静态成员变量属于整个类所有

静态成员变量的生命期不依赖于任何对象(上面的程序,每个对象的成员变量是独立的,所以打印出的mCount的值分别为1)

可以通过类名直接访问公有静态成员变量

所有对象共享类的静态成员变量

可以通过对象名 访问公有静态成员变量

2、静态成员变量的特性:

在定义时直接通过static关键字修饰

静态成员变量需要在类外单独分配空间

静态成员变量在程序内部位于全局数据区

3、语法规则:

TypeClassName::VarName=value;注意在类的外部进行初始化

代码版本二:

#include<stdio.h>classTest{private:staticintmCount;public:Test()//不要使用初始化列表进行初始化{mCount++;}~Test(){--mCount;}intgetCount(){returnmCount;}};intTest::mCount=0;TestgTest;intmain(){Testt1;Testt2;printf("mCount=%dn",gTest.getCount());printf("mCount=%dn",t1.getCount());printf("mCount=%dn",t2.getCount());return0;}

运行结果:

root@txp-virtual-machine:/home/txp#./a.outmCount=3mCount=3mCount=3
审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4388

    浏览量

    65315
  • C++
    C++
    +关注

    关注

    22

    文章

    2119

    浏览量

    75740
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    D3502C:低静态电流设计,延长设备续航能力

    ? ? ? ? 在当今电子设备日益便携化和智能化的背景下,电源管理芯片的低功耗设计成为提升设备续航能力的关键因素之一。D3502C?高压降压转换器,凭借其低静态电流设计,显著延长了电池供电设备
    的头像 发表于 07-14 14:53 ?170次阅读

    动态BGP与静态BGP的区别?

    支持自动发现(通常通过监听端口) 适用场景小型网络、连接少量对等网络大型网络、频繁变动的对等关系 可维护性修改需人工操作,灵活性差可自动发现/建立邻居,运维更自动化 路由学习来源通常结合静态路由导入来自
    发表于 06-24 06:57

    详解ADC电路的静态仿真和动态仿真

    ADC电路主要存在静态仿真和动态仿真两类仿真,针对两种不同的仿真,我们存在不同的输入信号和不同的数据采样,因此静态仿真和动态仿真是完全不同的两个概念,所以设置的参数不同。
    的头像 发表于 06-05 10:19 ?946次阅读
    详解ADC电路的<b class='flag-5'>静态</b>仿真和动态仿真

    在设置 gpioClock 时,如何设置成员变量以实现从高到低的速度?

    在设置 gpioClock 时,如何设置成员变量以实现从高到低的速度?
    发表于 05-23 06:47

    DA9233高效、超低静态电流降压稳压器和超低静态电流 LDO数据手册

    DA9233 是一款高效、超低静态电流降压稳压器和超低静态电流 LDO,采用紧凑型 I2C 可配置 WLCSP 封装。降压稳压器还具有超低输出纹波(10mV)。 该器件适用于需要低纹波和高效电源
    的头像 发表于 04-08 18:07 ?393次阅读
    DA9233高效、超低<b class='flag-5'>静态</b>电流降压稳压器和超低<b class='flag-5'>静态</b>电流 LDO数据手册

    EE-128:C语言中的DSP:从C调用汇编类成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:从C调用汇编类成员函数.pdf》资料免费下载
    发表于 01-07 13:48 ?0次下载
    EE-128:<b class='flag-5'>C</b>语言中的DSP:从<b class='flag-5'>C</b>调用汇编类<b class='flag-5'>成员</b><b class='flag-5'>函数</b>

    同样是函数,在CC++中有什么区别

    同样是函数,在 CC++ 中有什么区别? 第一个返回值。 C语言的函数可以不写返回值类型,编译器会默认为返回 int。 但是
    的头像 发表于 11-29 10:25 ?984次阅读

    C++新手容易犯的十个编程错误

    简单的总结一下?C++ 新手容易犯的一些编程错误,给新人们提供一个参考。 1 有些关键字在 cpp 文件中多写了 对于 C++ 类,一些关键字只要写在 .h 中就好,cpp 中就不用再加上了,比如
    的头像 发表于 11-15 12:42 ?1091次阅读

    如何测试TPA3118和TPA3116的静态电流和静态功耗?

    1.如何测试TPA3118和TPA3116的静态电流和静态功耗? 2.测试时候需要带负载嘛?(是否需要接喇叭) 3.如果用万用表测试应该怎么测?
    发表于 10-12 06:54

    传感器的动态特性和静态特性参数介绍

    传感器的特性可以分为静态特性和动态特性两大类,这两类特性分别描述了传感器在不同输入条件下的输出响应特点。下面将详细介绍这两类特性的主要参数。
    的头像 发表于 09-29 16:24 ?6003次阅读

    多级电路的直流静态工作点怎么安排?

    对多级电路的直流静态工作点怎么安排,以及电阻值怎么计算都很困惑,求这方面的好的学习资料~
    发表于 09-20 08:53

    安全对决:动态IP vs 静态IP,谁为网络安全保驾护航?

    动态IP和静态IP在安全性方面各有特点,不能简单地判断哪个更安全,而是取决于具体的使用场景和需求。
    的头像 发表于 09-13 09:45 ?1217次阅读

    解决I2C缓冲器上的静态电压失调部署不当问题

    电子发烧友网站提供《解决I2C缓冲器上的静态电压失调部署不当问题.pdf》资料免费下载
    发表于 08-30 09:19 ?5次下载
    解决I2<b class='flag-5'>C</b>缓冲器上的<b class='flag-5'>静态</b>电压失调部署不当问题

    嵌入式学习-静态链接和动态链接

    目标文件,一般是以.so文件形式存在。GCC默认是动态链接不需要加参数。举例子看一下动态链接库的使用方法,创建三个C语言文件:mymath.c、mymath.h、test.c。 通过两个变量
    发表于 08-28 09:33

    静态链接和动态链接

    目标文件,一般是以.so文件形式存在。GCC默认是动态链接不需要加参数。举例子看一下动态链接库的使用方法,创建三个C语言文件:mymath.c、mymath.h、test.c。 通过两个变量
    发表于 08-27 10:20