枚舉類型可以簡化代碼并且避免一些不必要的錯誤
#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();
}
無情的摸魚機器