假设我有一个类,其中有一个静态成员,但我没有创建该类型的任何对象。静态变量会占用内存吗?如果它会被占用,把它放在一个班级有什么意义?
原文由 user379888 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我有一个类,其中有一个静态成员,但我没有创建该类型的任何对象。静态变量会占用内存吗?如果它会被占用,把它放在一个班级有什么意义?
原文由 user379888 发布,翻译遵循 CC BY-SA 4.0 许可协议
C++ 标准没有明确说明何时分配静态内存,只要它在首次使用时可用。也就是说,它很可能在程序初始化期间分配,从而保证它在需要时立即存在,而不需要特殊情况代码来检测和执行访问分配。
将静态数据放入类中的目的与将任何其他数据放入类中的目的相同。通过将数据放入类结构中,您定义了一个封装命名空间,并且能够使用访问器和修改器方法控制访问;反过来,这将允许您验证进入静态内存存储的数据,并确保在整个数据使用过程中的一致性。
原文由 Kevin Lacquement 发布,翻译遵循 CC BY-SA 2.5 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
不。
静态成员不属于类的实例。它们甚至不会增加 1 位的实例和类大小!
输出:
即
A
和B
的大小完全相同。静态成员更像是通过A::j
访问的全局对象。请参阅 ideone 的演示: http ://www.ideone.com/YeYxe
来自 C++ 标准 (2003) 的 $9.4.2/1,
标准价 9.4.2⁄3 美元和 7 美元,
正如我所说,静态成员更像是全局对象!