【DeepSeek 学C+】effective modern c+ 条款七 初始化

[复制链接]
发表于 2025-10-11 08:12:38 | 显示全部楼层 |阅读模式
1. 非静态成员变量在类内初始化,时会分配内存吗 ?什么时间分配内存,


2. 大括号可以为非静态成员指定默认初始值。 那静态成员函数呢

静态成员变量须要在类外界说和初始化
声明不分配内存。 界说并初始化时分配内存。

3. 静态成员变量什么时间分配内存

在C++中,静态成员变量须要在类外举行界说和初始化,如许编译器才气分配内存。比方,在类中声明static int x;,然后在cpp文件中写int MyClass::x = 0;。这时间,内存应该是在步调启动时,全局变量初始化阶段分配的。
别的,C++17引入了内联变量,允许在类内部直接初始化静态成员变量,好比inline static int x = 0;。这时间,内存分配大概还是在步调启动时,但不须要在cpp文件中单独界说了。

4.静态成员变量须要在类外界说和初始化, 为什么呢?

C++的One Definition Rule(ODR),即每个变量只能有一个界说。类内的声明只是告诉编译器有这个变量存在,但现实的内存分配必须在一个翻译单位中完成。如许做的缘故原由是为了克制重复界说,确保全部使用该静态变量的地方都引用同一个实例。


5。 什么是静态局部变量









免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表