C ++对象的最大字段数

时间:2010-09-01 14:50:36

标签: c++ memory standards

This回答说,在Java中,对象可能拥有的最大字段数为65536。

C ++中的对象是否有这样的限制?

3 个答案:

答案 0 :(得分:14)

C ++ 03标准,附件B(实施数量):

  
      
  1. 由于计算机是有限的,C ++实现不可避免地受到限制   他们可以在程序的大小   成功处理。一切   实施应记录这些   已知的局限性。这个   文件可以引用固定限制   它们存在的地方,说如何计算   变量限制作为函数   可用资源,或说固定   限制不存在或未知。

  2.   
  3. 限制可能会限制数量   包括下面描述的那些或   其他。括号内的数字如下   建议将每个数量作为   该数量的最小值。然而,   这些数量只是指导原则   并且不确定合规性。

  4.   

列表包括

  • 物体的大小[262 144]。
  • 单个类,结构或联合中的数据成员[16 384]。
  • 成员在一个班级[4 096]中宣布。

因此没有定义的限制,但是应用限制的实现“应该”使限制至少与指示的值一样大。我担心我不知道普通的实现实际上做了什么,但如果他们没有记录它们,它们要么不合规,要么限制是“未知”。我想“未知”通常意味着“在编译时我们可以在可用内存中使用多少”。

是的,我不确定“班级成员”和“班级成员”之间的区别。我认为这意味着如果你的基类有10个数据成员,并且你的类声明了10个成员,那么你的类总共有20个(或21个)数据成员(取决于基类子对象是否算作数据成员) )。

答案 1 :(得分:1)

我不相信C ++规范中有任何内容可以涵盖这一点,但我怀疑不同的编译器会有不同的限制。

答案 2 :(得分:1)

对象可以拥有的字段数量没有硬性限制,但是我认为这是高度平台和编译器相关的。

如果您在对象中使用100个或更多字段,那么您的类的设计可能会出现问题,因此不必担心限制而是担心OOP设计