c++11 enum class

2014-11-23 22:25:54 · 作者: · 浏览: 4
GCC 官方站点提供了很好的文档,这里非常好的解释了为什么要引入enum class这个强类型enum。
任何希望精通C++的人,其实都应该认真的 阅读C++的标准文档,而不是只看别人写的书,第一手资料,特别是标准文档永远都是不可替代的。然后才是其他的书籍帮助更深的理解这些标准。
提供这个enum class的原因是因为旧的enum有不少缺点。简单描述一下:
1. 容易被隐式转换成int
2. underlying type 指的是编译器实现者幕后的实现细节导致了跨平台,跨编译器的不一致性。尺寸的不可估计等等。
3. 没有严格的scope界限
文档中还分析了试图解决以上问题的方法,但是最终都因为有各自的缺陷,还是创造了enum class来解决。技术总是不断的发展,enum class今天看解决了过去的问题,或许不久又会发现其还有缺点。:)
下面我写了一个例子:
#ifndef BEAN_REST_CODE_H_  
#define BEAN_REST_CODE_H_  
  
enum class RestCode { OK, ADD_CPU_ERROR };  
  
#endif  

松了一口气,幸亏没有搞得像 Java的Enum那么复杂。
至于语法怎么用,文档中有详细描述。仔细阅读吧。