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。 什么是静态局部变量

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐