gpt4 book ai didi

c++ - 如果没有创建该类的对象,该类的静态成员是否会占用内存?

转载 作者:IT老高 更新时间:2023-10-28 21:54:51 27 4
gpt4 key购买 nike

假设我有一个类,其中有一个静态成员,但我没有创建该类型的任何对象。静态变量会占用内存吗?如果它被占用了,把它放在一个类(class)有什么意义?

最佳答案

没有。

静态成员不属于类的实例。它们甚至不会增加 1 位的实例和类大小!

struct A
{
int i;
static int j;
};
struct B
{
int i;
};
std::cout << (sizeof(A) == sizeof(B)) << std::endl;

输出:

1

AB的大小完全相同。静态成员更像是通过 A::j 访问的全局对象。

在 ideone 上查看演示:http://www.ideone.com/YeYxe


$9.4.2/1 来自 C++ 标准 (2003),

A static data member is not part ofthe subobjects of a class. There isonly one copy of a static data membershared by all the objects of theclass.

标准版 9.4.2/3 美元和 7 美元,

once the static data member has beendefined, it exists even if no objectsof its class have been created.

Static data members are initializedand destroyed exactly like non-localobjects (3.6.2, 3.6.3).

正如我所说,静态成员更像是全局对象!

关于c++ - 如果没有创建该类的对象,该类的静态成员是否会占用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4842056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com