枚举类型
枚举类型可以简化代码并且避免一些不必要的错误
#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(); }
无情的摸鱼机器