C++(11):枚举类

  • Post author:
  • Post category:其他


传统的C/C++枚举有几个缺点:

1.具名枚举的名字及其成员的名字是全局可见的。

2.枚举很容易被隐式转换为整型变量。

3.枚举变量所占内存空间的大小由编译器决定。

#include <iostream>
using namespace std;

enum Color{red, green, blue};
//enum Wine{red, whitle};      //重复定义无法编译
enum Gray{white, black=0xfffffffffll};

int main(){

	int c1 = red;
	if(c1 >= black)            //跨枚举类型
	{}
	cout<<"sizeof(red)="<<sizeof(red)<<endl;
	cout<<"sizeof(white)="<<sizeof(white)<<endl;
	return 0;
}

运行程序输出:
sizeof(red)=4
sizeof(white)=8

为避免这些缺点,C++11增加了枚举类:

#include <iostream>
using namespace std;

//通过在enum后面加上class就可以声明枚举类
enum class Color{red, green, blue};
enum class Wine{red, whitle};        //通过枚举类的隔离,不会造成名称冲突
enum class Gray:char{white, black};  //指定枚举变量所占内存空间(不能使用wchar_t)

int main(){

	Color c1 =



版权声明:本文为jiemashizhen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。