1.简介
以往的enum类型将枚举成员的作用域暴露在枚举变量之外,用户不需要指定枚举类型就可以直接使用枚举的内容,这就有可能会造成名字的冲突,为了解决该你问题,C++11引入了强类型的枚举类型(strongly typed enums ).
2.旧风格的enum
#include "stdafx.h"
#include <iostream>
using namespace std;
enum OldEnum
{
First,
Second,
Third,
};
int _tmain(int argc, _TCHAR* argv[])
{
int nSelect = Second; //enum cast to int
switch( nSelect )
{
case First: //enum cast to int
cout<<"Select first"<<endl;
break;
case Second:
cout<<"Select second"<<endl;
break;
case OldEnum::Third: //也支持通过enum限定
cout<<"Select third"<<endl;
break;
default:
cout<<"Select none"<<endl;
break;
}
system("pause");
return 0;
}
由上述示例可以看出,旧风格的enum数据类型支持直接对enum成员的使用,例如First 同时也支持通过enum 名字的限定,