枚举类型
- 限定作用域
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)