2016-03-01 84 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

相关问题