为什么用枚举变量而不是常量定义?
举个例子:就以上传视频为例,视频一般有三个状态:草稿,审核和发布,我们可以将其定义为静态常量
class videostatus { int Draft =1 ;//草稿 int Review=2;//审核 int Publish=3;//发布 }
对于这种单值变量的静态常量定义,本身没有问题,主要是在使用的地方没有一个明确性的约束,比如
void judgeVideoStatus(int status) { //do something }
比如这里的judgeVideoStatus函数本意是传入VideoStatus的三种静态常量之一,用于判断视频状态,但是由于没有类型上的约束,因此传入任何一个int变量都是可以的,编译器也不会提出任何警告。
但是在枚举类型出现后,上面这种情况就可以用枚举严谨地去约束,比如用枚举去定义状态就非常的简洁了:
enum VideoStatus{Draft,Review,Published}
而且在用到枚举的地方会有更强的类型约束
void judgeVideoStatus(VideoStatus status) { //do something }
这样,在我们调用judgeVideoStatus函数时,入参类型就会收到明确的类型约束,一旦传入无效值,编译器就会帮我们检查,从而规避潜在问题。
https://www.bilibili.com/read/cv5140736
原文:https://www.cnblogs.com/leocc325/p/12839762.html