C++-C++11新特性(1)-enum
C++98与C++11
- C++98中{,,}的枚举量作用域是全局的,C++11可以用 class struct来实现相同枚举量定义。
- 枚举量Int 型 C++98无需显示转换,c++11需显示转换。
1.定义
比如我要定义一个苹果,一个橘子,都有小,中,大。
1.1C++98
enum apple{big, medium, small, special};
enum orange{big, medium, small};
在C++98中是会报错的。因为{ big, medium, small }是全局变量,不能定义两遍。
1.2C++11
在苹果、橘子都用相同的{ big, medium, small },而且不报错,可以class ,可以struct
enum class apple{big, medium, small, special};
enum class orange{big, medium, small};
enum struct apple{big, medium, small, special};
enum struct orange{big, medium, small};
2.使用
1.1C++98
enum apple{big, medium, small, special};
apple a1;
a1=big;
int i=a1;//C++98可以
1.2C++11 int 显示转换
apple a1 = apple::big;
orange o1 = orange::big;
int j=a1;//c++11错误
//C++98->C++11时要写成
Int k=int(a1) //C++11要写成 显示类型转换