enum
是枚举类型, 可用于区分某一类事物. 如: enum NUM{ONE = 1, TWO, THREE}
, 但上面例子中的枚举类型, 在使用中可能存在不确定性:
- 没有严格的作用域限制, 容易重名.
- 无法前向声明.
- 无法指定变量类型(默认int型).
- 存在隐式转换风险(转为int等).
如何解决上述问题呢?
- 可以通过
特殊前缀
的方法, 解决重名
问题. 如:NUM_ONE = 1
- 通过
namespace
或类
的方法解决作用域
问题.
namespace NUM {
enum {
ONE = 1,
TWO,
THREE
};
}
struct NUM2 {
enum {
ONE = 1,
TWO,
THREE
};
};
- 枚举类:
- 有自己的作用域.
- 不能隐式转换为其他类型
- 能够前向声明.
- 能够指定成员类型.
#include <iostream>
enum class NUM : char;
enum class NUM : char { ONE = '1', TWO = '2', THREE = '3' };
int main(void) { std::cout << static_cast<char>(NUM::THREE) << std::endl; }
如果觉得有帮助,可以扫描右边的微信打赏码支持一下。