c++11 强类型枚举】的更多相关文章

[C++11强类型枚举] 在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型. 此外,枚举所使用整数类型及其大小都由实现方法定义,皆无法明确指定. 最后,枚举的名称全数暴露于一般范围中,因此C++03两个不同的枚举,不可以有相同的枚举名. (好比 enum Side{ Right, Left }; 和 enum Thing{ Wrong, Right }; 不能一…
c++11 强类型枚举 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <map> // C++ 11引入了一种新的枚举类型,即“枚举类”,又称“强类型枚举”.声明请类型枚举非常简单,只需要在enum后加上使用class或struct. enum Old{Yes, No}; // old style enum cl…
一朋友在微信朋友圈晒了张照片,随手点开大图,带着赞赏的眼光扫了下,恩,几个月不见.又美丽了...咦?等等,她戴的这是什么?酷炫的造型! 金属边框! 微型摄像头! 这不是传说中的谷歌眼镜么?土豪啊,还好我们已经是朋友了...我先给了她一个赞,然后直奔主题,霸气回复道:我过几天去找你,你戴的是谷歌眼镜吧.哼哼小样.不想死的话...就让我...摸一下下能够么,我不奢求戴,摸一下就满足了...(哎.丢人啊). ------------------- 在cocos2dx 3.0的文档里有这么一句话:以 k…
在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型. 此外,枚举所使用整数类型及其大小都由实现方法定义,皆无法明确指定. 最后,枚举的名称全数暴露于一般范围中,因此C++03两个不同的枚举,不可以有相同的枚举名.(好比 enum Side{ Right, Left }; 和 enum Thing{ Wrong, Right }; 不能一起使用.) C++11 引进…
// C++11之前的enum类型是继承C的,不温不火: // C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮 // 使用过QT 的都知道,早就应该这么做了,用的非常爽!! // 一.C中enum类型的局限 // 1.非强类型作用域 enum type1{a, b, c}; enum type2{a, d, e}; //问题来了,两种枚举类型都有a枚举常量,并且作用域同样,发生了冲突 //2.同意隐式类型转换 if(type1::a == type2::d){;}…
// C++11之前的enum类型是继承C的,不温不火: // C++11对enum动刀了,加强了类型检查,推出强类型enum类型,眼前一亮 // 使用过QT 的都知道,早就应该这么做了,用的很爽!! // 一.C中enum类型的局限 // 1.非强类型作用域 enum type1{a, b, c}; enum type2{a, d, e}; //问题来了,两种枚举类型都有a枚举常量,而且作用域相同,发生了冲突 //2.允许隐式类型转换 if(type1::a == type2::d){;} /…
C++中的枚举类型常常和switch配合使用,这里用一个简单的switch控制键盘回调的代码片段来说明枚举的用法: //W A S D 前.后.左.右行走 enum Keydown{ Forward='w', Back='s', Left='a', Right='d' }key; while (true){ if (_kbhit()){//接受键盘回调 key = Keydown(_getch()); switch (key){case ('w') ://按w 往前走 { Move(.f, .f…
在标准C++11之前的枚举是继承C的,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较. 一.C中enum类型的局限语法: enum type1{a, b, c}; enum type2{a, d, e}; 1.非强类型作用域上面两种不同类型的枚举都含有a枚举常量,在相同作用域会发生冲突,编译会报错 2.允许编译器隐式类型转换if(type1::a == type2::d){;}两种不同enum常量比较没有实际意义,但是编译器是先将enum常量转换为int类型…
# include <stdio.h> enum WeekDay  //定义了一个数据类型(值只能写一下值) { MonDay, TuesDay, WednesDay, ThursDay, FirDay, SaturDay, SunDay }; int main(void){ enum WeekDay day = WednesDay; printf("%d\n", day); return 0; } 输出结果:2 把一个事物所有可能一一列举出来 枚举的优缺点 优点:代码更安…
效果 ``` ENUM_DEFINE ( Color, Red, Blue, ) EnumHelper(Color::Red) -> "Red" EnumHelper(Color::Red, std::toupper) -> "RED" ``` 关键技术 __VA_ARGS__ __VA_ARGS__ 实现了可变参数的宏. #define XXX(type, ...) enum class type { __VA_ARGS__ }; XXX(Color,…