C++中static关键字详解Cucucu

static关键字主要分为四大点:static修饰全局变量,static修饰局部变量,static修饰静态成员变量,static修饰静态成员函数

static修饰普通变量有两种情况:全局变量和局部变量

在全局变量前加上一个static关键字,普通全局变量就变成一个静态全局变量,我们主要从三个方面来进行说明:存储,初始化和作用域

存储

介绍存储之前,我们首先需要了解数据在内存中的存储结构,存储结构图如下

静态全局变量都存储在静态存储区(data段的ro段或者BSS段)。未初始化的静态全局变量存储在BSS段。初始化了的静态全局变量存储在data段的ro段,并且静态全局变量和普通全局变量一样,在整个程序运行期间会一直存在。

初始化

未经初始化的全局变量会被系统自动初始化为0

作用域

普通局部变量加上static关键字修饰后,变成静态局部变量,我们仍然从三个方面来进行说明:存储,初始化和作用域

静态局部变量存储在静态存储区,和静态全局变量一样,初始化了的静态局部变量存储在data段的ro段,没有初始化的静态局部变量存储在BSS段。

未经初始化的全局静态变量会被自动初始化为0。

静态局部变量作用域仍然为局部作用域。当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,没有销毁,而是留在内存块中,只是我们不能再对其进行访问。直到函数再次被调用,并且静态局部变量的值是不变的。

static可以实现在同一个类中,不同对象之间实现数据共享、协调工作。

静态变量有全局变量的优势,但不会被全局变量一样被滥用,而用于管理静态变量。

类的静态成员。属于类,也属于对象,但终究属于类。

在类的数据成员前加上关键字static,类的数据成员就成为静态数据成员,我们主要从五个方面来进行说明:共享、初始化、类大小、存储、访问

共享

设置静态数据成员,可以实现在同一个类中,不同对象之间实现数据共享

在类外定义,定义格式:数据类型类名::数据变量=初始化的值

类大小

存储在静态存储区data段的ro段。

访问

可以通过对象访问,也可以通过类名访问。类的静态数据成员,属于类,也属于对象,但终究属于类。

之前我们已经了解到,类的静态成员变量是可以在没有对象的情况下进行访问的,因此要访问类的静态成员变量的函数也要能实现在没有对象的时候访问。为了实现这样的情况,我们可以把访问静态数据成员的函数设置为静态成员函数。static修饰类的成员函数,主要用来管理静态数据成员。

静态成员函数的意义,不在于信息共享,而在于管理静态数据成员,完成对静态数据成员的封装

static只能访问静态数据成员而不能访问非静态数据成员。因为非静态数据成员在调用时this指针被当做参数传入。而静态成员函数属于类,而不属于对象,没有this指针

非静态成员函数可以访问静态成员函数。

对于static关键字中类的成员来说,我们可以举一下的例子进行说明

要实现不同乘除法实现求和,我们可以考虑类的构造函数以及静态数据成员的特性:静态数据成员在同一个类中、多个对象之间实现数据共享。

由于每创造一个对象就会调用一次构造函数,因此我们可以设置一个静态数据成员,然后每次调用递加一次

1classSolution{2public:3//可以利用构造函数来实现不用加减乘除做加法4/*5利用类的静态成员变量中static特性。static修饰类的数据成员变量,可以实现数据成员变量在类中的不同对象之间的数据共享6因此我们可以在构造函数中使用这个静态成员变量,由于创建每个数据成员都会调用其构造函数,即可以实现相加7*/8classtemp9{10public:11temp()12{13++N;14sum+=N;15}16staticvoidreset()17{18N=0;19sum=0;20}21staticintgetsum()22{23returnsum;24}2526private:27staticintN;28staticintsum;29};3031intSum_Solution(intn){32temp::reset();33temp*a=newtemp[n];34delete[]a;35a=nullptr;36returntemp::getsum();37}38};39intSolution::temp::N=0;40intSolution::temp::sum=0;

THE END
1.C++程序师C++程序师招聘猎聘C++程序师招聘频道为您提供大量的C++程序师招聘信息,有超过10000多C++程序师招聘信息任你选寻,招聘C++程序师人才就来猎聘C++程序师招聘!求职找工作就用猎聘聊。https://m.liepin.com/s/c6e0398a6bd78a3885a6f44d736a4146/
2.招聘求职信息招聘网站人才网工作性质: 不限 <> 1/30 键合机资深C++工程师 [上海·闵行区]09:27发布前程无忧 15k-30k经验5-10年 / 本科 骄成超声 制造业 / 不需要融资 / 500-2000人 制造业 “五险一金,绩效奖金,定期体检” 互联网业务-C/C++/GO后台开发工程师 [深圳·南山区]09:22发布 https://www.lagou.com/zhaopin/C++/
3.C++找工作校招需要掌握到什么程度硬声是电子发烧友旗下广受电子工程师喜爱的短视频平台,推荐C++找工作校招需要掌握到什么程度 视频给您,在硬声你可以学习知识技能、随时展示自己的作品和产品、分享自己的经验或方案、与同行畅快交流,无论你是学生、工程师、原厂、方案商、代理商、终端商上硬声APP就够https://www.elecfans.com/v/419063
4.C++找工作校招需要掌握到什么程度?C++ 找工作校招需要掌握到什么程度? 在IT行业,C++无疑是一种非常重要的编程语言。对于即将步入职场的大学生来说,掌握C++到何种程度才能在校招中脱颖而出,成功获得心仪的职位呢?今天就来聊聊这个话题。 对于C++的基础语法和数据结构,你必须有深入的了解。这包括但不限于变量、数据类型、运算符、控制流、函数、指针https://www.ss3316.com/bao/24/9612_2262773.html
5.C++经典面试题(找工作时候收集的)资源C++经典面试题(找工作时候收集的) 导航 登录 登录后您可以: 免费复制代码 关注/点赞/评论/收藏 下载海量资源 写文章/发动态/加入社区 立即登录 会员中心 消息 创作中心 学习中心成长任务 发布 面试题 需积分: 1081 浏览量2009-01-13上传149KBDOC 『 面试题大汇总』https://download.csdn.net/download/a283489754/966216
6.大龄C++求职历程技术解析文章80 后,今年 3 月份开始找工作。工作以来一直以 C++开发为主,用过 lua/go,但不精通,可以干活的程度。大大小小的公司面了大约十多个吧。目标一直是想进入互联网行业(杭州 top2)。其他的面试都挺顺利也拿到了几个 offe国外服务器r, top2 也都给了面试机会,其中一个一面就挂了,另外一个到了 3 面挂的(给https://www.idczone.net/news/4142.html/
7.求职求助面试java岗用c++写代码可以吗本人一直是用c++写算法题的,但之后找工作估计是java后端,所以突然想到了这个问题o(╥﹏╥)o0 收藏分享 回复讨论接收动态 共4 个回复最热小约翰可汗 来自湖北 2024-04-15 可以但没必要,建议不要这样,可能面试官当场不介意你这么搞,能做出算法题特别是高难度一些的就证明你很优秀。但是吧面试官可能会觉得你Java基础https://leetcode.cn/circle/discuss/4L2prB/
8.牛客网求职之前,先上牛客,就业找工作一站解决。互联网IT技术/产品/运营/硬件/汽车机械制造/金融/财务管理/审计/银行/市场营销/地产/快消/管培生等等专业技能学习/备考/求职神器,在线进行企业校招实习笔试面试真题模拟考试练习,全面提升求职竞争力,找到好工作,拿到好offer。_https://m.nowcoder.com/feed/main/detail/c8059fb83d714769be849826c9f98f8e
9.两次校招后呕心沥血整理的指南找工作方向 校招的后端研发虽然一般来说有JAVA/C++/Golang三个方向,但并没有非常严格的要求,例如腾讯就统一称为后台开发。你可以通过外界了解公司主要使用的技术栈,比如腾讯旧服务大多 C++,一些新服务使用 Golang;字节大多也是 C++ 和 Golang;阿里主要是 JAVA(也会有 C++);美团和快手主要是 JAVA;滴滴有 Golanghttps://sspai.com/post/64458
10.黑马C++52期:成为C++程序员的最佳选择21xrx.com因此,对于在这个领域工作的程序员而言,熟练掌握C++编程技能是非常必要的。以下是C++岗位的基本职位描述: C++程序员找工作的困境 作为一名C++程序员,找工作的困难度比其他语言的程序员要更高。C++语言是一种高级的编程语言,广泛应用于各种各样的行业中,例如游戏开发、金融科技等等,这使得C++程序员在求职过程中面临着https://21xrx.com/Articles/read_article/210425
11.找工作笔试面试那些事儿(1)C,C++基础和编程风格(2)C++/C循环语句中,for 语句使用频率最高,w hile语句其次,do语句很少用。这里从for循环出发,提出几点需要注意的点: 4.4 关于switch语句 Switch语句格式如下所示: 注意点: 1)每个cas e 语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。 https://www.jianshu.com/p/9f1afdd0b222
12.c++C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计http://www.nydjfy.com/
13.C++到底还能做什么?2)关于找工作的事: 现在学C++到底能做什么样的工作?就像我前面说的,因为不大了解C++主要的应用在哪,所以,也不清楚到,能用C++来做哪方面的工作. 3)关于com: 我之前听人说,C++做到最后就是做com组件开发.情况是这样的吗?如果是的话,是不是用com来做有关远程调用对象和接口或是分布式系统等方面的应用.如果https://www.douban.com/group/topic/11136421
14.上海大学生求职找工作上海前程无忧招聘信息应届生求职网为应届大学生提供大量上海前程无忧招聘信息,大学生在上海找工作、找实习、找兼职,就上上海应届生求职网。https://www.yingjiesheng.com/shanghai/ptjob.html
15.福州找工作,福州招聘网,福州人才网最新招聘信息福州人才网是面向福州人才市场及福建海峡人才网,福州招聘网为企业提供职位发布,简历搜索等专业人才招聘服务,为求职者提供福州人才网最新招聘信息,福州找工作上福州招聘网https://www.hxrc.com/Area/FuZhou.htm
16.高级cc++编译技术.pdfCC++笔试、面试题目大汇总 CC++笔试、面试题目大汇总。找工作、学习的好资料。 上传者:tdchina时间:2010-11-23 UNIX环境高级编程(第2版)源码+编译步骤 基于ubuntu12.04下UNIX环境高级编程 (第2版) 官方源码+编译步骤 上传者:lzch24035时间:2012-11-17 https://www.iteye.com/resource/tm1695648164-11100546
17.吉利c++招聘(工资待遇要求)浙江吉利控股集团有限公司2、有自动驾驶或高精地图相关工作经验者 3、了解拓扑打断,要素分组的自动化算法 更多 C++ 软件工程师 宁波-慈溪市 | 3-5年 | 本科以上 20000-40000 C++工程师(导航引擎) 北京-朝阳区 | 3-5年 | 本科以上 20000-40000 C++工程师(地图算路引擎开发) 北京-朝阳区 | 5-10年 | 本科以https://www.jobui.com/company/6892/salary/j/c%2B%2B/