在类中定义符号常量类型

主要有两种方式:

  • 静态变量  static const int
  • 类中定义枚举

不带作用域的枚举

enum e_SubjectType
{
    Chinese,
    English
};
int eSubjectType = English;// OK
enum e_TeacherType
{
  Chinese,
  English,
  Math
};
// 此时编译会报错,重复定义了

 

C++11标准提供了带作用域的枚举

enum class e_SubjectType
{
    Chinese,
    English
};

enum class e_TeacherType
{
    Chinese,
    English,
    Math
};

e_SubjectType eSubjectType = e_SubjectType::English; // OK
int iTeacherType = e_TeacherType::Math; // 报错

  • 不带作用域的枚举,如果有重复的枚举值编译会报错
  • 不带作用域的枚举,能够隐式转换为整形
  • 带作用域的枚举,允许出现重复的枚举值;使用时需要加上作用域
  • 带作用域的枚举,不会隐式转换为整形;但允许强制转换
  • 带作用域的枚举,允许修改底层的整形类型表示。enum class:short e_TeacherType={xxx, yyy, zzz};

 

posted @ 2019-06-10 15:53  N0b0dy  阅读(401)  评论(0编辑  收藏  举报