枚举是c++的一种机制,用来列出某种有穷集合。在C++11中新增了enum class(同enum struct),那它跟enum有何不同呢?
enum的特点:
enum的成员初始化,如果已被指定就按指定值初始化。如果没有被指定,那么就是上一个成员值加1,第一个成员没有指定则为0。
- 向整形的隐式转换。
- 作用域的问题,如果已经有一个枚举类中的成员名称被占用,那么它无法再被定义。
- 不清楚底层类型,这个在不同的编译器上可能是不同的类型。
举个例子:
#include <iostream>
using namespace std;
enum color {
red,
yellow = 4,
blue = 0xFFFFFF00U
};
enum mycolor {
//red,
//不可以定义,由于在color中已被定义
white,
pink
};
void func(int c)
{
cout<<"call func\n"<<endl;
}
int main()
{
color c(red);//red作用域可见
func(c