传统的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 版权协议,转载请附上原文出处链接和本声明。