Aar*_*nke 2 c++ enums operators
我最近遇到了这段代码,我想知道为什么它有效.枚举声明:
enum BuildResult {
RESULT_ERROR,
RESULT_SUCCESS
};
Run Code Online (Sandbox Code Playgroud)
后来,这个枚举在if语句中使用(忽略了一个事实,它可以替代地RESULT_ERROR
):
if (!objectHere->build_result == ClassNameHere::RESULT_SUCCESS)
Run Code Online (Sandbox Code Playgroud)
我不知道你可以使用not运算符!
来翻转Enum的值.这只适用于有两种状态的枚举吗?是否有其他类型的隐式运算符可以与Enums一起使用?我也发现这个问题,有关手动声明运营商,但它似乎并没有提及任何隐含的运营商枚举.
将enum
被隐式现浇到bool
.当你翻转它时,它不再是一个enum
类型,而是一个布尔值.
如果要更换enum
有enum class
,这是类型安全的,这种转换是不再可能.
当使用简单的枚举声明时,enum
rvalues的行为与整数完全相同.您甚至可以指定整数的类型:
enum myEnum : uint32_t { NOT, TYPE, SAFE };
Run Code Online (Sandbox Code Playgroud)
(注意枚举的隐式的值:{NOT=0, TYPE=1, SAFE=2}
)