enumLight{ Red, Blue };// ❌ 编译错误,Red重复了! // enum class enum classNewColor{ Red, Green };// 必须写NewColor::Red enum classNewLight{ Red, Blue };// ✅ 完全没问题 怎么把数字转成enum class? 方法1:直接转换(有风险) intnum =1; aut
编译错误的原因在于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 =...
1) C++98 的 enum 是“非域化的”;而 C++11 的 enum class 是“域化的”,限制了枚举成员只在域内可见 2) enum class 的缺省潜在类型 (underlying type) 是 int 型,而 enum 没有缺省潜在类型 3) enum class 一般总是前置声明,而 enum 只有在指定了潜在类型时才可以是前置声明 参考资料 《Effective Mod...
枚举类的底层数据必须是有符号或无符号整型,比如 char unsigned int unsigned long,默认为 int。 3.前置声明应用 enmu class Clolor:char; //前置声明枚举类 void Foo(Color*p); //前置声明的使用 //... enum class Color:char{RED,GREEN,BLACK,WHITE}; //前置声明的定义 参考:http://blog.csdn.net...
所以不可以简单的假设枚举类型的尺寸就是int类型的尺寸,说不定会遇到一个编译器为了节约内存而采用上面的处理策略。 3. 使用enum类型是否真的能够起到有限集合常量的边界约束呢? 首先看一下下面这个例子: enum EType { e1 = 0, e2 }; void func1( EType e ) ...
enum是计算机编程语言中的一种数据类型。枚举类型:在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中...
简介: C/C++ - enum 与 int 相互转换 First of all——如何正确理解enum类型? enumColor { red, white, blue}; Colorx; 我们应说x是Color类型的,而不应将x理解成enumeration类型,更不应将其理解成int类型。 我们再看enumeration类型: enumColor { red, white, blue}; 理解此类型的最好的方法是将这个...
enum class E2 { A = 1, C = 2 };// 1. 强枚举类型不会将枚举元素暴露在外部作用域 cout << (int)(E1::A) << endl;int A = 100;// 2. 不相关的两个枚举类型不能直接比较,编译报错 cout << (E1::B == E2::C ? "相等" : "不相等") << endl; //error cout << (E1::B ==...
就像上面的代码:我们仍然可以比较两个不同枚举体的大小,用枚举体调用参数为int的函数。显然此时的枚举体发生了 整形提升 。 在无法使用C++11新版enum的情况下,机制的程序员想到了:将enum封装到类的内部的方法。 #include <iostream> class Color { private: ...
class Base_2 { public: int m_a; protected: int m_b; private: int m_c; };...