C++知识分享:静态成员变量,你弄懂了吗?

时间:2022-10-09 18:08:46 | 浏览:344

C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具

C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。

先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态成员与C++方式是相容的,因为其初始化方式与方法的定义一致。下面是一个例子:

相对于相容点,静态成员变量更多展现出怪异的一面,以下是个人总结:

(1)静态成员不能在类中初始化;非静态成员可直接初始化,静态成员在类中只是声明,所以不能直接初始化。辅以const的静态成员可以直接初始化,但那是const的能力而非static所有;

(2)对静态成员初始化,需要在类之外定义时再完成;

(3)初始化时不受访问修饰符限制;private类型的静态成员可直接访问并赋值;

(4)静态成员初始化时可调用函数,并且可以直接调用所属类的私有函数;

其中第4点比较重要。在不支持C++11的编译器上,要完成静态map成员,就不得不借助函数返回:

C++11引入了统一初始化和lambda表达式,初始化的写法更为简单:

静态成员的这些异常行为很容易联想到全局变量,两者有许多相通的地方:在程序启动前完成初始化,在程序终止后销毁;存放的地方都是静态存储区而非堆栈;通过名字空间操作符获取值;在非函数块内通过函数调用或者lambda表达式完成初始化…

虽然各种面向对象编程语言都有静态变量,并且使用比例不低。但从面向对象的角度,静态成员是另一种形式的全局变量,其破坏了隔离和封装,增加了类之间的耦合,让测试变得更困难。实际编程中,应当慎用全局变量,并收紧其访问权限。

所以本质上静态成员也是全局变量,只是归属到特定类的名下。

你懂了吗?

那么今天的分享就到这里了,后续会更新更多精彩项目或者知识内容的,大家要好好学C语言C++哟~

写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

相关资讯

广州白云机场吞吐量破7000万增长趋稳后三大机场格局还有变数吗?

每经记者:王帆 每经编辑:陈俊杰今日(12月14日)10时许,国内三大机场之一的广州白云国际机场(以下简称广州白云机场)迎来2019年以来的第7000万名旅客。至此,广州白云机场实现了旅客吞吐量从2018年6972万人次到新一个千万级的突破

白云机场T1将用6-8年实现“大变身”

广州要闻【白云机场T1将用6-8年实现“大变身”】你最熟悉的白云机场T1即将大变身!未来,T1国际区布局拟重新调整,与T2国际区连成一体;航站楼东侧接驳 声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持

周知!近期广州坐飞机、火车出行有这些变化

自4月20日零时起,白云机场一号航站楼国内出发航班集中调整至B区西一指廊保障。请T1国内航班出发旅客按指示前往C、D、E三个值机岛办理乘机手续,T1国际航班出发旅客按指示前往L、K值机岛办理乘机手续。T1国内航班到达旅客流程调整后将统一从一

近期广州坐飞机、火车出行有这些变化

自4月20日零时起,白云机场一号航站楼国内出发航班集中调整至B区西一指廊保障。请T1国内航班出发旅客按指示前往C、D、E三个值机岛办理乘机手续,T1国际航班出发旅客按指示前往L、K值机岛办理乘机手续。T1国内航班到达旅客流程调整后将统一从一

「最好的语言」PHP在2019年:缺点还有,但会变得更好

PHP 是一种开源的通用计算机脚本语言,适用于网络开发并可嵌入 HTML 中使用。它的语法借鉴吸收 C 语言、Java 和 Perl 等流行计算机语言的特点,易于一般程序员学习。但是由于太难用,也是被很多人吐槽的一种语言。下面,来看看这位曾

PHP、Java、Python、C、C++这几种编程语言都有什么特点或优点?

一、强类型和弱类型语言:C、 C++、 Java 、Python都是强类型的语言。PHP是弱类型的语言。强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义

C、C++、Java、JavaScript、PHP、Python分别用来开发什么?

首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。

PHP变量

变量是用于存储信息的"容器":实例<?php$x=5;$y=6;$z=$x+$y;echo$z;?>运行实例 »与代数类似x=5y=6z=x+y在代数中,我们使用字母(如 x),并给它赋值(如 5)。从上面的表达式 z=x+y

黄花梨,四大名木之首的时代变迁

降香黄檀,也就是我们常说的黄花梨木,是一种豆科植物,因其原产地在海南,所以更多时候都叫做海南黄花梨。明中期 黄花梨雕松下人物笔筒在我国,黄花梨是一种珍贵的木材,属国家二级保护植物列,其树木本身成材时间长,木质结实稳定且不易变形,枝干内的花纹

想配近视眼镜需不需要防蓝光?变色近视眼镜的利与弊,一文讲清楚

绝大多数近视的人一至两年会换一次眼镜,可是眼镜无意中损坏或者近视度数增加,都需要重新配戴眼镜。配镜的时候,配镜人员会向近视的朋友推荐,是否需要加防蓝光或者配变色眼镜?很多近视的人对于近视镜是否需要加防蓝光功能或者配变色眼镜有很多疑问,变色眼

友情链接

SEO域名抢注宝宝起名网妈妈知道币圈伦敦旅游网咸宁新闻爆料网林志颖歌迷网考研信息网深圳世界之窗资讯网斯特拉斯堡旅游网山东泰山资讯网雪糕冰淇淋资讯网资阳新闻头条网百魔洞旅游网数字人直播资讯网今日淮北酒吧资讯网阿姆斯特丹旅游网迈克尔·乔丹球迷网
c语言中文官网-零基础c++从入门到精通pdf、c语言编译器、C/C++开发工具、c语言入门自学零基础、c++入门自学、c/c++软件下载、c语言编程软件、c语言自学免费网站、c语言零基础自学视频教程、c++手机编程软件、c语言入门程序设计、初级编程视频教程、c语言在线编程平台、C语言线上作业网站。
c语言中文官网 chuxinxin.cn ©2022-2028版权所有