隐式不是带有枚举解释的运算符 (!)?
Implicit not operator (!) with enums explanation?
我最近遇到了这段代码,我想知道它为什么有效。枚举声明:
enum BuildResult {
RESULT_ERROR,
RESULT_SUCCESS
};
稍后,这个枚举被用于 if 语句中(忽略它可能被RESULT_ERROR
的事实(:
if (!objectHere->build_result == ClassNameHere::RESULT_SUCCESS)
我不知道您可以使用 not 运算符!
来翻转 Numum 的值。这仅适用于具有两种状态的枚举吗?是否有其他类型的隐式运算符可以与枚举一起使用?我确实发现了这个问题关于手动声明运算符,但它似乎没有提到枚举的任何隐式运算符。
enum
被隐式转换为bool
。当你翻转它时,它不再是enum
类型,而是一个布尔 pr 值。
如果将enum
替换为类型安全的enum class
,则无法再进行此转换。
使用简单枚举声明时,enum
右值的行为与整数完全相同。您甚至可以指定整数的类型:
enum myEnum : uint32_t { NOT, TYPE, SAFE };
(注意枚举的隐式值:{NOT=0, TYPE=1, SAFE=2}
(
相关文章:
- 为什么比较运算符如此快速
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 使用C++中的模板和运算符重载执行矩阵运算
- 请解释"函数1(p1,p2,p3);"的输出
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 增量运算符与后缀混淆
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 一个关于在C++中重载布尔运算符的问题
- 隐式不是带有枚举解释的运算符 (!)?
- 有人可以用"显式运算符 const GUID_t&() const"来解释成员函数的函数吗?
- 特征运算符如何在内部解释为 MKL 函数?
- 有人可以解释速记赋值运算符的实际工作原理吗?
- 解释增量运算符
- 编译器将输出的流运算符<<解释为用于按位左移的二进制运算符<<
- 任何机构都可以在运算符重载中解释这行代码
- 通过指针访问数据(重新解释转换)与 .或 ->运算符
- &= 必须始终解释为运算符吗?
- 如何用二元运算符的比较结果来解释条件
- 解释了c++中不同情况下的箭头和点运算符
- 在代码片段中解释 C++ 中":"运算符的使用"int i:2;"