enum:底层类型可以是int、unsigned int、char等整数类型,默认情况下是int。 enum class:底层类型可以是任何整数类型,包括枚举类本身不具备的类型(例如long、unsigned long long等)。 4. 枚举值的访问: enum:枚举值可以直接使用枚举值的名称。 enum class:枚举值需要通过作用域解析运算符::来访问,例如EnumClassName::...
1) C++98 的 enum 是“非域化的”;而 C++11 的 enum class 是“域化的”,限制了枚举成员只在域内可见 2) enum class 的缺省潜在类型 (underlying type) 是 int 型,而 enum 没有缺省潜在类型 3) enum class 一般总是前置声明,而 enum 只有在指定了潜在类型时才可以是前置声明 参考资料 《Effective Mod...
编译错误的原因在于Sex与Student都处在同一作用域下,成员变量重定义。 这便体现C++11引入枚举类(enum class)的重要性,enum class能够有效对枚举作用域进行限定,避免了枚举成员的重定义。 enum class Sex { Girl, Boy }; enum class Student { Girl, Boy }; int main(int argc, char *argv[]) { Sex a =...
enum class Enum:unsigned int{VAL1,VAL2}; 正如前面所说,强类型枚举能解决传统枚举不同枚举类下同枚举值名的问题,使用枚举类型的枚举名时,必须指明所属范围,比如:Enum::VAL1,而单独的VAL1则不再具有意义。 还有一点值得说明的是C++11中枚举类型的前置声明也是可行的,比如: enum class Enum; enum class Enum...
enum class Status; // use of fwd-declared enum void continueProcessing(Status s); 2) 潜在类型enum class 的潜在类型 (underlying type),缺省为 int 型,当然也可自定义潜在类型。无论哪种方式,编译器都会预先知道枚举成员的大小1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // underlying type...
enum可以具有属性和方法,就像class一样。下面是一个具有属性和方法的enum的示例: enumDay{MONDAY("Monday",1),TUESDAY("Tuesday",2),WEDNESDAY("Wednesday",3),THURSDAY("Thursday",4),FRIDAY("Friday",5),SATURDAY("Saturday",6),SUNDAY("Sunday",7);privateStringname;privateintnumber;privateDay(Stringname...
enum class E1 { A = 1, B = 2 };enum class E2 { A = 1, C = 2 };// 1. 强枚举类型不会将枚举元素暴露在外部作用域 cout << (int)(E1::A) << endl;int A = 100;// 2. 不相关的两个枚举类型不能直接比较,编译报错 cout << (E1::B == E2::C ? "相等" : "不相等") <<...
io.ObjectStreamException; public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable { private final String name; public final String name() { return name; } private final int ordinal; public final int ordinal() { return ordinal; } protected Enum(String name, int ...
public class Student{ public Genders sex; } 2、java.lang包 (1)范围 最广泛使用的包,包含了java程序的基础类和接口,例:包装类、Math类、String类等; 同时还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等“操作系统”的类。
importenumclassIntTestA(enum.IntEnum):A=1B=2print(['a','b','c'][IntTestA.A])# 输出结果为 bprint([iforiinrange(IntTestA.B)])# 输出结果为 [0, 1] enum.Flag基类也是enum.Enum基类的子类,通过enum.Flag基类定义的枚举的枚举成员之间可以使用按位运算符(&、|、^、~、<<、>>)。但是枚举成...