在类中定义符号常量类型
主要有两种方式:
- 静态变量 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};