天下

记录修行的印记

C/C++中的枚举类型

C中的枚举类型
enum 枚举名{ 枚举值表 };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
如:
enum weekday{ sun,mou,tue,wed,thu,fri,sat};
2. 枚举变量的声明
如同结构和联合一样,枚举变量也可用不同的方式声明,即先定义后声明,同时定义声明或直接声明。
设有变量a,b,c被声明为上述的weekday,可采用下述任一种方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;

或者为:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者为:
enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

例如:
该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被声明为weekday类型变量的取值只能是七天中的某一天。

枚举名中的枚举元素系统是按照常量来处理的,故叫枚举常量,他们是不能进行普通的算术赋值的,但是你可以在声明的时候进行赋值操作!
枚举元素在全局作用域有效.
如:
void main()
{    
    
enum weekday a,b,c;
    a 
= sun;
    b 
= wed;
}

C
++中的枚举类型(类和命名空间)
基本同C的枚举类型,也就是说,在文件全局作用域定义的enum.在全局作用域有效.
但C
++中,enum类中有作用域要求.
而在类中定义的enum类型在类中有效,并遵守类的权限(
public,private,protected,友元)访问规则,但在全局作用域中无效.

#include 
<stdio.h>
#include 
<stdio.h>

class A
{
private:
    
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
    weekday day;
    A():day(sun){}
};
int main()
{
    A::weekday a 
= A::sun; //same as A::weekday b = A::weekday::sun; 
    return 0;
}
编译器会很生气,编译通不过
Error    
1 error C2248: 'A::weekday' : cannot access private enum declared in class 'A'
存取权限改成public就可以了.

可以看到,在枚举类型这一块,C
++对C的兼容是多么的自然并容易理解.

posted on 2012-10-13 12:03 天下 阅读(1144) 评论(0)  编辑 收藏 引用 所属分类: C/C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(4)

随笔分类(378)

随笔档案(329)

链接

最新随笔

搜索

最新评论