C++ 常量区 静态区 堆区 栈区
C++中类的变量可以通过static、const、static const来修饰,不同的修饰在不同的情况下表示不同的含义。
程序运行期间的内存分区:
1.代码区:存放CPU指令码。
2.常量区:存放只读常量,该区只读,不可写。
3.静态区:存放静态变量,该区在程序编译完成后就决定了其大小,程序运行期间该区的大小不会变,该区可读写。
4.动态区:分为堆区和栈区,程序运行期间其大小处于动态变化中。处于该区的变量也会时而被创建时而被销毁。
static关键字:
经过static修饰的变量会作为类的属性而不是实体属性存在。
static修饰的变量作为程序运行时的静态变量,存在于内存的静态区,静态区的数据初始化工作由操作系统在加载完程序后执行main函数前进行。操作系统在加载完程序后,将常量区中存放的变量初值复制给静态变量,完成其初始化。
static修饰的变量通过int ClassName::value=1
这种方式进行初始化。此时不再需要static 关键字。程序运行期间也可以对变量进行赋值操作。
const关键字:
经过const修饰的属性,顾名思义是指常量。
const修饰的属性仍然属于实体属性,所以其初始化工作需要由构造函数的初始化列表中完成,而且也只能在构造函数的初始化列表中初始化。运行