【发布时间】:2018-12-13 00:06:54
【问题描述】:
考虑一个具有许多布尔属性的类
class A
{
bool a;
bool b;
bool c;
bool d;
bool e;
bool f;
};
虽然每个bool 对象可以用一个位表示,但这里每个属性都需要一个字节(如果我没记错的话)。该对象将占用 6 个字节,而不仅仅是 1 个字节(其中 6 位将被实际使用)。原因是位不可寻址,只有字节可寻址。
为了稍微压缩内存,可以使用vector<bool> 或bitset,然后通过它们的索引访问属性。例如,可以将 get 函数编写为
bool A::get_d() {data[3];}
理想情况下,我希望能够使用InstanceOfA.d 直接访问属性。是否可以这样做,同时确保我的所有 6 个bool 都被压缩在同一个字节内?
【问题讨论】:
标签: c++ memory boolean byte bit