【发布时间】:2011-01-09 18:39:31
【问题描述】:
我想知道静态成员变量通常如何在 C++ 等语言中实现,以及它们的使用是否会影响实例化对象的大小。
我知道静态成员由该类的所有实例共享,但它是如何共享的?如果它影响对象大小,那么拥有 10 个静态变量会增加比 1 更多的大小吗?
我之所以这么问,是因为我可以想到两种可能的实现方式:
- 向每个对象添加指向静态数据的指针,类似于某些实现添加指向虚函数表的指针的方式
- 静态数据只是像全局变量一样被直接引用,偏移量由链接器/加载器解析
【问题讨论】:
-
这是您可以轻松测试自己的问题。只需创建适当的类并执行 sizeof(T) 它就会告诉你它们有多大。
-
@Martin York: AFAIK,Java 中没有 sizeof 运算符。
标签: c++ static-members