【C++】枚举

C++枚举

ENUM

  • 即enumeration, 是一个数值集合,也是给一个值命名的方法;
  • 可以帮助我们将一组数值集合作为类型,而不仅仅是用整型作为类型;
  • 但是,只是一种命名值的方法,当想使用整数来表示某些状态或某些数时,非常有用

例1

int A = 0;
int B = 1;
int C = 2;
int value = B;
 if (value == B)
 {

 }

现在,我们希望能定义一种类型,只能是A, B, C三种中的一种

enum Example
{
 A, B, C
};

int a = 0;
int b = 1;
int c = 2;
Example value = B;
Example value = 5;

报错,因为Example只能取A, B, C三个数中的一个。
此外,默认第一个是0, 第二个是1, 第三个是2, 所以A=0, B= 1, C=2

指定想要给枚举赋值的整数类型

enum Example: unsigned char
{
 A, B, C
};

int a = 0;
int b = 1;
int c = 2;

注意:不能使用float,因为float不是整型;
再次强调:枚举只是给特定的值命名的一种方式,这样就不用在各种地方,处理各种整数

在Log类使用enum

例2

class Log
{
public:

 enum Level
 {
  LevelError = 0, LevelWarning, LevelInfo
 };

private:
 Level m_LogLevel = LevelInfo;  // m前缀表明是私有成员变量

public:
 void SetLevel(Level level)
 {
  m_LogLevel = level;
 }
 void Error(const char* message)
 {
  if (m_LogLevel >= LevelError)   // 如果日志级别是0或更高,将打印这些信息
   std::cout << "[ERROR]:" << message << std::endl;
 }

 void Warn(const char* message)
 {
  if (m_LogLevel >= LevelWarning)   // 如果日志级别是1或更高,将打印这些信息
   std::cout << "[WARNING]:" << message << std::endl;
 }

 void Info(const char* message)
 {
  if (m_LogLevel >= LevelInfo)   // 如果日志级别是2或更高,将打印这些信息
   std::cout << "[INFO]:" << message << std::endl;
 }
};

int main()
{
 Log log;
 log.SetLevel(Log::LevelWarning);
 log.Warn("Hello!");
 log.Error("Hello!");
 log.Info("Hello!");
 std::cin.get();
}

注意:定义Class的函数时不要与enum里的命名冲突

为什么使用enum

可以使代码更加简洁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值