c++ 什么时候应该在布尔值上使用bit-field?

uinbv5nw  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(140)

我一直在研究一些代码在c++在虚幻的引擎,我偶然发现,他们有一个头文件4布尔声明为:

bool bIsEvaluating : 1;
bool bIsStopping : 1;
bool bIsBeginningPlay : 1;
bool bCompleteOnPostEvaluation : 1;

和一个没有位字段的布尔值:

bool bIsPlayingForward;

4个带位域的布尔值在构造函数中被设置,并在一些函数中被改变或使用。不带位域的布尔值在一些函数中被设置和使用。我的问题是什么时候会有人在布尔值中使用位域,为什么不总是在布尔值中使用它们,因为它们只接受真值或假值?

6l7fqoea

6l7fqoea1#

我在Unreal Engine中为布尔值使用位字段来保存内存和提高性能。如果我有大量不需要完整字节的布尔变量,使用位字段可以节省内存。访问位字段也可能比访问完整字节快,因为它需要更少的内存访问。这在我需要频繁访问布尔值的情况下特别有用。此外,使用位字段可以使特定的布尔值以特定的方式使用变得更清楚,这可以提高代码的可读性。但是,需要注意的是,位字段有一些限制和权衡,我很少使用它们,并且只有当好处超过潜在的坏处时才使用。
在Unreal Engine中,当你有特殊的理由时,你应该使用位域来表示布尔值,比如为了保存内存或者提高性能。如果你没有特殊的理由使用位域,一般来说使用常规的布尔变量会更好。你也应该注意使用位域的限制和权衡,并且要谨慎使用。只有当好处大于潜在的坏处时。

相关问题