• 枚举类型


    枚举类型
    我们在写程序的时候常常需要定义一组与对象相关的属性例如一个文件可能会以
    三种状态输入输出和追加之一被打开
    典型情况下我们通过把每个属性和一个唯一的const 值相关联来记录这些状态值
    因此我们可能会这样写
    const int input = 1;
    const int output = 2;
    const int append = 3;
    并按如下方式使用这些常量
    bool open_file( string file_name, int open_mode);
    // ...
    open_file( "Phoenix_and_the_Crane", append );
    尽管这样做也能奏效但是它有许多缺点一个主要的缺点是我们没有办法限制传递
    给函数的值只能是input output 和append 之一
     
    枚举enumeration 提供了一种替代的方法它不但定义了整数常量而且还把它们组
    成一个集合例如
    enum open_modes{ input = 1, output, append };
    open_modes 是一个枚举类型每个被命名的枚举定义了一个唯一的类型它可以被用作
    类型标识符例如
    void open_file( string file_name, open_modes om );
    input output 和append 是枚举成员enumerator 它们代表了能用来初始化和赋值
    open_modes 类型变量的值的全集例如
    open_file( "Phoenix and the Crane", append );
    如果我们试图向open_file()传递一个input output append 之外的值就会产生编译错
    误而且如果像下面这样传递一个相等的整数值编译器仍然会将其标记为错误。
     
    枚举不能迭代
    枚举不能直接得到枚举的名称
    可以显式地把一个值赋给一个枚举成员这个值不必是唯一的,如果有{e1 = 1,e2, e3 = 1,  e4} ,那么e2为2,e4也为2,可见枚举的值是根据前面的枚举的值递推得到,而且两个枚举的值可以重复
  • 相关阅读:
    Java开发必备工具 ------------工欲善其事,必先利其器(补充+1)
    我的第一篇博客
    GPD mircoPC linux系统安装
    如何简单的编译v8动态库
    如何让FasterTransformer支持动态batch和动态sequence length
    合并多个tensorflow模型的办法
    IDEA优化配置
    Easyui中select下拉框(多选)的取值和赋值
    Windows下搭建Nacos及Seata
    SpringBoot打包成jar运行脚本
  • 原文地址:https://www.cnblogs.com/cplover/p/3371923.html
Copyright © 2020-2023  润新知