2016-03-01 82 views
-1

我認爲std::bitset<0> myBS的尺寸應該是0,而std::cout << sizeof(myBS)可以打印出1。任何人都可以解釋我嗎?這是否意味着一個bitset永遠不能爲空?C++ - std :: bitset的大小<0>?

+2

這意味着一個C++對象永遠不會少於1個字節。該標準保證它。 –

+0

'sizeof'在標準C++中永遠不會產生0 –

+0

「可以爲空」在C++中是一個危險的術語。在像SQL和Java這樣的語言中,對象可以是NULL。在C++中,情況並非如此。 _Pointers_可以爲空,就是這樣。整數可以是零,字符串可以是空的,但都不是「空」。 – MSalters

回答

3

sizeof在C++中永遠不會返回零。一個對象的大小至少是一個(除了空基類的情況)。如果不是這種情況,那麼你可以有一個對象數組,其中所有的對象將被存儲在相同的地址。不管怎樣,sizeof(std::bitset<N>)的值實際上是不相關的。 std::bitset<N>類提供接口N位的序列。如果N = 0,則該標準保證該接口恰好爲0位。無論對象有多大都是如此。無論該對象有多少位,都只能使用其中的0個位。

+0

謝謝你,'interface'就是我一直在尋找的單詞。我誤解了位集中位元素的數量作爲大小,而它是基數。 – scmg

相關問題