2010-09-01 12 views
4

This回答指出,在Java中的對象可能有字段的最大數量爲65536一個C場的最大數目++對象

是否有規定在C++中對象的任何這樣的限制?

+1

它可能是高度依賴平臺的,這個頁面可悲的是沒有提到任何關於它的內容(儘管在其他方面有用)http://msdn.microsoft。COM/EN-US /庫/ ft39hh4x.aspx – Skurmedel 2010-09-01 14:53:23

回答

14

C + 03標準,附錄B(實施量):

  1. 因爲計算機是有限的,C++實現都不可避免地在他們可以 成功地處理的程序的大小的限制 。每個 實施應記錄那些已知的限制。這個 文檔可能會引用它們存在的固定限制 ,說明如何根據 可用資源或者說固定的 限制不存在或未知來計算可變限制 。

  2. 該限制可能會限制數量 包括下面描述的或 其他。建議將每個數量爲 後面的方括號中的數字作爲該數量的最小值 。但是,這些數量僅爲 ,並且不確定是否符合要求。

列表包括

  • 對象[262 144]的大小。
  • 單個類,結構或聯合中的數據成員[16 384]。
  • 在一個班級申報成員[4 096]。

所以沒有定義的限制,但是應用限制「應該」的實現使得限制至少與指示的值一樣大。恐怕我不知道常用的實現方式,但如果它們沒有記錄它們,它們要麼不符合要求,要麼限制是「未知的」。我猜「未知」一般意思是「在編譯時儘可能多地容納可用內存」。

順便說一句,我不確定「班上的成員」和「班上的成員」之間有什麼區別。我認爲這意味着如果您的基類有10個數據成員,並且您的類聲明瞭10個成員,那麼您的類總共有20個(或21個)數據成員(取決於基類子對象是否計爲數據成員)。

1

我不相信C++規範中有任何內容能夠涵蓋這一點,但我懷疑不同的編譯器會有不同的限制。

1

對象可以具有的字段數量沒有硬性限制,但是說我認爲這是高度依賴於平臺和編譯器的。

也有可能是,如果你使用的是即使100或對象更多的領域,所以不應該擔心的限制,而不是擔心面向對象設計的東西非常錯誤的與你的類的設計