C++对象的最大字段数

duk*_*ave 4 c++ memory standards

这个答案表明,在Java中,对象可能具有的最大字段数为65536.

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

Ste*_*sop 14

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

  1. 由于计算机是有限的,因此C++实现不可避免地受限于它们可以成功处理的程序的大小.每个实施都应记录已知的限制.本文档可引用存在的固定限制,说明如何根据可用资源计算变量限制,或者说固定限制不存在或未知.

  2. 限制可能会限制包括下面描述的数量或其他数量的数量.建议将每个数量后面的括号内的数字作为该数量的最小值.但是,这些数量仅是指导原则,不能确定合规性.

该清单包括

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

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

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