access enum class name [: type] { enumerator-list } var;
access enum struct name [:type] { enumerator-list } var;
因此,enum有数据成员、成员方法。必要的时候可以重载某些函数。
enum有两种类型:managed and standard,msdn上有详细描述。
enum取值范围的计算:
C++标准规定超出枚举类型表示范围的赋值结果是undefined的。
取值范围的计算,就是找到最少的能容纳下所有的元素的位数。
如果enumerator是正数,首先找到最大值,将这个值并用二进制表示,计算需要多少bits(设为n)才能最小的容纳下这个值,n个bit所能表示的范围(0~2^n-1)就是enum的取值范围。
如果有负数,就要考虑增加一个符号位。
enum的内存分配:
到底应该分配多少,是由编译器决定的?
看一个帖子上是这么写的:C++标准在这里有个限制:1<= sizeof(enum)<=sizeof(int)。
为什么呢?
《effective c++》中写不能对enum取地址又是为什么呢?
本文深入探讨了C++中枚举类型的定义与使用方法,包括枚举的数据成员、成员方法及函数重载等内容。同时,文章还介绍了枚举类型的两种形式(managedandstandard),并详细解释了枚举取值范围的计算原理及其内存分配机制。
1万+

被折叠的 条评论
为什么被折叠?



