在高级C++开发的时候,枚举类型可以用来取代bool的地位,因为bool占用1个字节只存了一个true false数据,是存在内存浪费的。
枚举类型不仅容易扩展、可读性高,也节约空间
UE5 中对于枚举类型的代码规范
- 应避免使用
bool
函数参数,切勿用于传递到函数的标签。其也拥有与前文提到匿名文字问题,但API利用更多行为扩展时,此类问题将成倍增加。相反,应优先使用列举(参见强类型化列举章节中将列举用作标签的建议):
// 旧样式
FCup* MakeCupOfTea(FTea* Tea, bool bAddSugar = false, bool bAddMilk = false, bool bAddHoney = false, bool bAddLemon = false);
FCup* Cup = MakeCupOfTea(Tea, false, true, true);
// 新样式
enum class ETeaFlags
{
None,
Milk = 0x01,
Sugar = 0x02,
Honey = 0x04,
Lemon = 0x08
};
ENUM_CLASS_FLAGS(ETeaFlags)
FCup* MakeCupOfTea(FTea* Tea, ETeaFlags Flags = ETeaFlags::None);
FCup* Cup = MakeCupOfTea(Tea, ETeaFlags::Milk | ETeaFlags::Honey);