码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Primer 笔记——枚举类型

时间:2017-08-31 22:24:09      阅读:212      评论:0      收藏:0      [点我收藏+]

标签: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或更大的整型,实际提升的结果由枚举类型的潜在类型决定。

 

C++ Primer 笔记——枚举类型

标签:col   基础上   开始   int   log   c++11   自动   一个   情况   

原文地址:http://www.cnblogs.com/zoneofmine/p/7460654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!