枚举类型

枚举类型可以简化代码并且避免一些不必要的错误

#include<iostream>

int A=0;
int B=1;
int C=2;

int main()
{
    int value=B;
    if(value==B)
    {
        //Do something
    }
    std::cin.get();
}

ABC都是全局变量,所以我们可以在全局中对ABC三个数进行修改,如果我们想要用value等于某种类型比如ABC,那么就容易出错,此时枚举类型会更好

#include<iostream>

enum Example
{
    A,B,C
};

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

int main()
{
    Example value=B;
    if(value==B)
    {
        //Do something
    }
    std::cin.get();
}

此时如果我们令Example value=5程序就会出错,判断条件value==B也可以改为具体的值如value==1,应为B实际表示的值就是1,枚举类型默认是从0开始顺序对应。

 也可以这样修改

enum Example
{
    A=0,B=2,C=7;
};

如果只修改一个值,那么后面的值会按照顺序改变

#include<iostream>

class Log
{
public:
    enum Level
    {
        LevelError=0,LevelWarning,LevelInfo
    };

private:
    Level m_LogLevel=LevelInfo;//m means this member is private
                                                //m_logLevel=LogLevelInfo, print everything
public:
    void setLevel(Level level)
    {
        m_LogLevel=level;
    }
    void Error(const char* message)
    {
        if(m_LogLevel>=LevelError)
            std::cout<<"[Error]"<<message<<std::endl;
    }

    void Warn(const char* message)
    {
        if(m_LogLevel>=LevelWarning
            std::cout<<"[WARNING]"<<message<<std::endl;
    }
    void Info(const char* message)
    {
        if(m_LogLevel>=LevelInfo
            std::cout<<"[Info]"<<message<<std::endl;
    }
};

int main()
{
    Log log;
    log.setLevel(Log::LevelWarning);//根据设置的LogLevel来实现不同的输出
    log.Error("Hello");
    log.Warn("Hello");
    log.Info("Hello");
    std::cin.get();
}
原文地址:https://www.cnblogs.com/wangtianning1223/p/12673444.html