c++ enum和enum class
enum可能导致命名冲突,比如下面俩个RED颜色:
enum Color { RED, GREEN, BLUE };
//enum Color2 { RED }; // 编译不过,RED重定义
enum可以自动转化为int:
上面代码打印:
ok. 再测试下enum class
可以看出,enum class的枚举值可以一样,不会导致命名冲突,但是不能直接转换为int值,上面编译报错NewColor和int类型不兼容。需要用static_cast类型转化,如下:
打印:
ok.
enum class 还可以指定其底层类型,如下:
打印:
期望打印A,但是字符值没打印出来,因为没指定字符值,所以其值为0,也就是'\0',这个是字符串结束标志,所以没打印出来。 修改下指定A的值为‘A’,如下:
打印:
ok.