枚举类型
限定作用域
enum class mode{intput,output,append};
枚举成员在枚举类型作用域外不可访问
不限定作用域
enum mode{intput,output,append};
枚举成员与枚举类型本身作用域相同
枚举成员是const
初始化枚举必须使用枚举成员或者该类型的另一个对象,不能使用int等
mode om = 2;//错误,2不是mode的枚举成员 om = mode::input ;//正确
enum是由某种整数类型表示的,默认是int。可以在名字后面使用冒号确定enum使用的类型
enum mode : unsigned long long{a=10000,b=30000,c=30000}; //b和c的值可以相同
前置声明
enum mode:unsigned long long;//不限定作用域的,必须制定成员类型 enum class mode ;//限定作用域的,直接默认int
形参匹配
enum mode{input,output,append}; void fun(mode); void fun(int); int main() { mode m = input; fun(128);//匹配fun(int) fun(input);//匹配fun(mode) fun(m);//匹配fun(mode) } //不能直接将整形传递给enum形参 //但是可以将不限定作用域的枚举类型或成员传给int形参 void method(unsigned char); void method(int); unsigned char uc = input; method(input);//调用method(int) method(uc);//调用method(usigned char)