最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

C++中enum的用法

IT圈 admin 27浏览 0评论

2024年5月18日发(作者:独清晖)

1、枚举enum的用途浅例

写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成

绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。

更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,

对应定义3个常数,即:

const int input = 1;

const int output = 2;

const int append = 3;

然后,调用以下函数:

bool open_file(string file_name, int open_mode);

比如,

open_file("Phenix_and_the_Crane", append);

这种做法比较简单,但存在许多缺点,主要的一点就是无法限制传递给open_file

函数的第2个参数的取值范围,只要传递int类型的值都是合法的。(当然,这样的情况下

的应对措施就是在open_file函数内部判断第二个参数的取值,只有在1,2,3范围内才

处理。)

使用枚举能在一定程度上减轻这种尴尬(注1),它不但能实现类似于之前定义三个常

量的功能,还能够将这三个值组合起来成为独一无二的组。例如:

enum open_modes {input = 1, output, append};

以上定义了open_modes为枚举类型enumeration type。每一个命名了的枚举都

是唯一的类型,是一个类型标示器type specifier。例如,我们可以重新写一个open_file

函数:

bool open_file(string file_name, open_modes om);

在open_modes枚举中,input, output, append称为枚举子enumerator, 它们

限定了open_modes定义的对象的取值范围。这个时候,调用open_file函数和之前的方

法还是一模一样:

open_file("Phenix_and_the_Crane", append);

但是,如果传递给open_file的第二个参数不是open_modes枚举类型值的话(注

1),那么编译器就会识别出错误;就算该参数取值等价于input, output, append中的某

个,

也一样会出错哦!例如:

open_file("Phenix_and_the_Crane", 1);

2、枚举的定义

2024年5月18日发(作者:独清晖)

1、枚举enum的用途浅例

写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成

绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。

更常见的,打开一个文件可能有三种状态:input, output和append. 典型做法是,

对应定义3个常数,即:

const int input = 1;

const int output = 2;

const int append = 3;

然后,调用以下函数:

bool open_file(string file_name, int open_mode);

比如,

open_file("Phenix_and_the_Crane", append);

这种做法比较简单,但存在许多缺点,主要的一点就是无法限制传递给open_file

函数的第2个参数的取值范围,只要传递int类型的值都是合法的。(当然,这样的情况下

的应对措施就是在open_file函数内部判断第二个参数的取值,只有在1,2,3范围内才

处理。)

使用枚举能在一定程度上减轻这种尴尬(注1),它不但能实现类似于之前定义三个常

量的功能,还能够将这三个值组合起来成为独一无二的组。例如:

enum open_modes {input = 1, output, append};

以上定义了open_modes为枚举类型enumeration type。每一个命名了的枚举都

是唯一的类型,是一个类型标示器type specifier。例如,我们可以重新写一个open_file

函数:

bool open_file(string file_name, open_modes om);

在open_modes枚举中,input, output, append称为枚举子enumerator, 它们

限定了open_modes定义的对象的取值范围。这个时候,调用open_file函数和之前的方

法还是一模一样:

open_file("Phenix_and_the_Crane", append);

但是,如果传递给open_file的第二个参数不是open_modes枚举类型值的话(注

1),那么编译器就会识别出错误;就算该参数取值等价于input, output, append中的某

个,

也一样会出错哦!例如:

open_file("Phenix_and_the_Crane", 1);

2、枚举的定义

发布评论

评论列表 (0)

  1. 暂无评论