代码之家  ›  专栏  ›  技术社区  ›  davetapley

C++对象的最大字段数

  •  4
  • davetapley  · 技术社区  · 15 年前

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

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

    3 回复  |  直到 8 年前
        1
  •  14
  •   Steve Jessop    15 年前

    C++ 03标准,Annex B(实现数量):

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

    2. 限制可能会限制数量。 包括以下描述的内容或 其他。括号内的数字 建议每个数量作为 该数量的最小值。然而, 这些数量只是指导方针 不确定是否符合要求。

    清单包括

    • 物体的大小[262144]。
    • 单个类、结构或联合中的数据成员[16384]。
    • 在单个类中声明的成员[4 096]。

    因此,没有定义限制,但是应用限制的实现“应该”使限制至少与指定的值一样大。恐怕我不知道公共实现实际上是做什么的,但是如果它们没有记录下来,那么它们要么不兼容,要么限制是“未知的”。我想“未知”通常意味着“尽可能多地在编译时放入可用内存”。

    顺便说一句,我不知道“类中的成员”和“类中声明的成员”之间有什么区别。我认为这意味着如果您的基类有10个数据成员,并且您的类声明了10个成员,那么您的类总共有20(或21)个数据成员(取决于基类子对象是否算作数据成员)。

        2
  •  1
  •   Stephen Doyle    15 年前

    我不相信C++中有任何东西来覆盖这个,但是我怀疑不同的编译器会有不同的限制。

        3
  •  1
  •   Tristan    15 年前

    对象可以拥有的字段数量没有严格的限制,但我认为这是高度依赖于平台和编译器的。

    如果你在一个对象中使用了100个或更多的字段,那么你的类的设计可能也有很大的问题,所以不必担心限制,而应该担心OOP设计。