关于enum的小结&& 疑问

本文深入探讨了C++中枚举类型的定义与使用方法,包括枚举的数据成员、成员方法及函数重载等内容。同时,文章还介绍了枚举类型的两种形式(managedandstandard),并详细解释了枚举取值范围的计算原理及其内存分配机制。
enum

access enum class name [: type] { enumerator-list } var;

access enum struct name [:type] { enumerator-list } var;

因此,enum有数据成员、成员方法。必要的时候可以重载某些函数。

enum有两种类型:managed and standardmsdn上有详细描述。

enum取值范围的计算:

C++标准规定超出枚举类型表示范围的赋值结果是undefined的。

取值范围的计算,就是找到最少的能容纳下所有的元素的位数。

如果enumerator是正数,首先找到最大值,将这个值并用二进制表示,计算需要多少bits(设为n)才能最小的容纳下这个值,nbit所能表示的范围(0~2^n-1)就是enum的取值范围。

如果有负数,就要考虑增加一个符号位。

enum的内存分配:

到底应该分配多少,是由编译器决定的?

看一个帖子上是这么写的:C++标准在这里有个限制:1<= sizeof(enum)<=sizeof(int)

为什么呢?

effective c++》中写不能对enum取地址又是为什么呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值