C++ enum and enum class

| 分类 C++  | 标签 C++_data_types  Effective_Modern_C++ 

在c++中,enum hack有时候可以用来充当一个常量的用法,例如下面例子:

enum name {Joey = 10};
enum class color {green, red, blue};

int main(int argc, char* argv[]) {
    int a[Joey];          //Ok,这样可以生成一个int[10]的数组
    int a[color::green];    //Error, 这样是不行的
    int a[static_cast<int>(color::green)] //OK, 强制将color类型转成int类型
}

值得注意的是,enum可以直接转换而enum class是不能直接隐式转换的。而且无论是enum或者enum class的元素都是是一个右值,所以它们既不能取指针也不能取引用。


上一篇     下一篇