天天看點

枚舉類型

枚舉類型可以簡化代碼并且避免一些不必要的錯誤

#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();
}      

無情的摸魚機器

上一篇: 構造