类成员初始化的两种方法,const,static类成员的初始化
类成员初始化的两种方法,const,static类成员的初始化
我们已经知道可以用构造函数里的代码来初始化对象,这就是我们要用的第一种初始化方式。
第一种初始化方式
可以发现代码里的构造函数里规定了m_named
的值,但如果变量变多,并且要在构造函数里添加函数的话。第一种未免有点繁琐了(对于观看者来讲)像:
这样在构造函数里面既有函数,又要初始化,会显得杂乱,另外还有一个严重的问题,后面会讲到。
所以出现了第二种初始化方式。
第二种初始化方式
这种构造函数后面加冒号的行为来进行初始化,有下面个好处:
-
代码整洁自然不用说
-
节约内存空间,防止多次构造函数。
为什么这么说,直接看代码!
结果为:
看出蹊跷了,他在我们不知道的情况下多生成了默认构造函数,这并不是我们想要的。
这是因为,我们多创立了一个空间来容纳对example的二次初始化。
我们的目的是扔掉它,用一个新的对象覆它,我们创建了两个对象,而不是一个
这时应该这样
或者
此时的结果为:
另外冒号标识符非常重要的作用有下面:
以下参考[类的常量成员的初始化]((7条消息) 类的常量成员的初始化_类中常量成员初始化_chengonghao的博客-CSDN博客)
类的成员的初始化:
-
非static非const成员变量,必须在构造函数中进行初始化;
-
static成员变量,必须在类的外面进行初始化;
-
const成员变量,必须在类的构造函数的初始化列表中初始化;
-
static const成员变量,可以在类的内部声明时初始化。
这里会报错,常量成员不能在类中声明的地方初始化,因为此时类并没有进行实例化(创建对象),因此并没有分配内存,不能进行初始化。
上述示例应该写成:
类常量成员初始化
嗯,以上就是全部喽 😄
__EOF__

本文作者:Drip
本文链接:https://www.cnblogs.com/drip3775/p/17311608.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/drip3775/p/17311608.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~