C++静态成员变量在内存中的存储方式
Posted LC编程开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++静态成员变量在内存中的存储方式相关的知识,希望对你有一定的参考价值。
如果只声明了类而未定义对象,则类的一般成员变量是不占用内存空间的,只有在定义对象的时候,才为对象的成员变量分配空间。但是,静态成员变量不属于某一个对象,在为对象分配空间中,不包括静态成员变量所占的空间。程序测试例子例如:
程序运行结果如下:
g++ test.cpp -o exe
wkf@ubuntu:~/c++$ ./exe
len = 32
可以看到student类对象的大小就是 char addr[32] 成员变量所占用的 32个字节空间,对于 number 这个static 类型的数据,不占用对象的内存空间。
静态成员变量是在所有对象之外单独开辟空间,只要在类中定义了静态成员变量,即使不定义对象,也为静态成员变量分配空间,它可以被类对象引用。
在一个类中可以有一个或多个静态成员变量,所有的对象共享这些静态成员变量,都可以引用它。
学习C语言时已了解静态变量的概念:如果在一个函数中定义了静态变量,在函数结束时该静态变量并不释放,仍然存在并保留其值。现在讨论的静态成员变量也是类似的,它不随对象的建立而分配空间,也不随对象的撤销而释放(一般成员变量是在对象建立时分配空间,在对象撤销时释放)。静态成员变量是在程序编译时被分配空间的,到程序结束的时候才释放空间。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
以上是关于C++静态成员变量在内存中的存储方式的主要内容,如果未能解决你的问题,请参考以下文章