码迷,mamicode.com
首页 > 编程语言 > 详细

enum 与 enum class

时间:2016-11-17 23:52:24      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:imp   str   target   cout   显示   而且   struct   param   示例   

c++11中引入了新的枚举类型---->强制枚举类型

// unscoped enum:
enum [identifier] [: type]
{enum-list}; 

// scoped enum:
enum [class|struct] [identifier] [: type] 
{enum-list};
  identifier:指定给与枚举的类型名称。
  type:枚举器的基础类型(默认int),所有枚举器都具有相同的基础类型,可能是任何整型。
  enum-list:枚举中以逗号分隔的枚举器列表。 范围中的每个枚举器或变量名必须是唯一的。 但是,值可以重复。 在未区分范围的枚举中,范围是周边范围;在区分范围的枚举中,范围是 enum-list 本身。
  class:可使用声明中的此关键字指定枚举区分范围,并且必须提供 identifier。 还可使用 struct 关键字来代替 class,因为在此上下文中它们在语义上等效。


如下为两者的简单示例:
enum Test
{
  test1,
  test2
};

int a = test1;  // 类型隐式转换,枚举常量无须限定
if (test1 == 0)
  cout << "Hello world.";



enum class ErrorCode
{
  ERROR_ONE,
  ERROR_TWO,
  ERROR_THREE
};

int num = 2;
num = static_cast<int>(ErrorCode::ERROR_ONE); // 类型需要显示转换,而且枚举常量必须限定
ErrorCode test = static_cast<ErrorCode>(12);  // 其实这个整数已经超出范围了,但是居然合法
if (test == ErrorCode::ERROR_THREE)
  cout << "It‘s impossible"

enum 与 enum class

标签:imp   str   target   cout   显示   而且   struct   param   示例   

原文地址:http://www.cnblogs.com/laogaoyang/p/6075564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!