目录
说明:
在此之前我是很不习惯使用枚举的,因为枚举虽然能让代码可读性很好,但是也有着很大的缺点,那就是无法进行数据类型检测,在尤其是早在swtich等语句中使用,你无法知道你的case是不是你想要的值,比如你的case是 case 1:然而为了使case语句变得可读性很高,你可以使用case one:然而这也是枚举的弊端,你不知道这个one是不是你想要的1,万一是0,编译器是无法通过语法错误提示你.所以枚举简直就是一把双刃剑.用的好代码可读性瞬间上升一个台阶,用的不好那简直就是阅读代码的灾难.
枚举弊端:
编译器是无法通过语法错误提示你.
枚举优势:
好代码可读性瞬间上升一个台阶
枚举使用:
刚好,最近我就遇到了这个问题,再三取舍,我决定使用枚举,(代码是给人读的,至于弊端多注意写代码的习惯就好了,大不了使用断言)
定义枚举:
最好是在头文件中定义
enum CLASSName
{
ClassA = 0,
ClassB,
ClassC,
ClassD
};
使用枚举:
第一个函数是遍历枚举
第二个函数是使用switch语句使用枚举,个人认为枚举跟switch是绝配,这样你就可以很清楚的知道你选择的是那个case,不至于case都是数字,开始写的时候还好,等半个月下来,自己都不知道写的是啥了.
void testEnum()
{
CLASSName cn;
for (cn = ClassA; cn <= ClassD; cn=(CLASSName)(cn + 1))
{
PrintEnum(cn);
}
}
void PrintEnum(CLASSName& CN)
{
switch (CN)
{
case ClassA:
std::cout << "ClassA = " << ClassA << std::endl;
break;
case ClassB:
std::cout << "ClassB = " << ClassB << std::endl;
break;
case ClassC:
std::cout << "ClassC = " << ClassC << std::endl;
break;
case ClassD:
std::cout << "ClassD = " << ClassD << std::endl;
break;
}
}
结果:
先简单使用一下,等需要用到枚举的高级用法再回来补充.用到啥学啥.