标签:col 基础上 开始 int log c++11 自动 一个 情况
1.和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。
2.C++包含两种枚举:限定作用域的和不限定作用域的。C++11新标准引入了限定作用域的枚举类型。
enum class /*struct*/ MyEnum { A = 0}; // 限定作用域的枚举 enum class /*struct*/ MyEnum1 { A = 0 }; // 限定作用域的枚举可以有重复的名字,使用时也必须加上作用域 enum MyEnum2 { B = 0 }; // 不限定作用域的枚举 enum MyEnum3 { B = 0 }; // 不限定作用域的枚举不能有重复的名字 enum {test = 0} t,t1; // 未命名的不限定作用域的枚举,只能在定义是就定义对象
3.默认情况下,枚举值从0开始,依次加1,如果没有显示提供值,就在前一个枚举值的基础上加1。枚举成员时const的。
4.只要enum有名字,我们就能定义并初始化该类型的成员。想要初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象。
5.一个不限定作用域的枚举类型的对象或枚举成员自动的转成整型。
6.在C++11新标准中,我们可以在enum的名字后加上冒号以及我们想在该enum中使用的类型。对于不限定作用域的枚举类型来说,其枚举成员不存在默认类型,我们只知道成员的潜在类型足够大,肯定能容纳枚举值。如果我们指定了潜在类型,则一旦超出范围将引发错误。
enum test : long { A = 1, B };
7.在C++11 新标准中,我们可以提前声明enum。enum的前置声明必须指定其成员的大小。
enum test : long; // 不限定作用域的,必须指定成员类型 enum class test1; // 限定作用域的枚举类型可以使用默认成员类型int
8.int值不可以做以enmu为形参的函数的实参,当enum做形参时,enum的值提升成int或更大的整型,实际提升的结果由枚举类型的潜在类型决定。
标签:col 基础上 开始 int log c++11 自动 一个 情况
原文地址:http://www.cnblogs.com/zoneofmine/p/7460654.html