当前位置: 首页 > news >正文

仙桃网站建设公司平顶山网站建设费用

仙桃网站建设公司,平顶山网站建设费用,搜索案例的网站有哪些,百度搭建wordpressC初学者指南第一步—6.枚举和枚举类 文章目录 C初学者指南第一步---6.枚举和枚举类1.作用域的枚举(enum class类型)(C11)2.无作用域的枚举(enum类型)3.枚举类的基础类型4.自定义枚举类映射5.和基础类型的互相转换 1.作用域的枚举(enum class类…

C++初学者指南第一步—6.枚举和枚举类

文章目录

  • C++初学者指南第一步---6.枚举和枚举类
    • 1.作用域的枚举(enum class类型)(C++11)
    • 2.无作用域的枚举(enum类型)
    • 3.枚举类的基础类型
    • 4.自定义枚举类映射
    • 5.和基础类型的互相转换

1.作用域的枚举(enum class类型)(C++11)

语法:

enum class name { enumerator1, enumerator2, … enumeratorN };

默认值:每个枚举类映射到从 0 到 N-1 的整数

enum class day { mon, tue, wed, thu, fri, sat, sun };
day d = day::mon;      
d = day::tue;  // OK
d = wed;  // Err! 编译错误: 'wed' 只能在day作用域内
  • 仅限于命名范围的枚举类
  • 无法像某些其他语言那样查询枚举的属性

2.无作用域的枚举(enum类型)

语法:

enum name { enumerator1, enumerator2, … enumeratorN };

注意缺少关键字“class”。

enum day { mon, tue, wed, thu, fri, sat, sun };
day d = mon;  // OK!, 枚举值 "mon" 没有作用域
int i = wed;  // OK!, i = 2
enum stars { sun,};  // Err! 编译错误:名称冲突
  • 不局限于作用域的枚举⇒名称冲突
  • 危险的隐式转换为基础类型
  • 无法像某些其他语言那样查询枚举的属性

注意一下enum class和enum类型的区别,enum枚举类型从C语言开始就有了,C++中也继承了这一类型,那为什么还要增加enum class呢,主要有以下几个原因:

  1. 类型安全性:
    enum class 是一种强类型枚举(strongly typed enum)。它拥有更好的类型安全性,因为它的枚举值是被限定在枚举类型内部的。
    传统的 enum 是一种弱类型枚举(weakly typed enum)。它的枚举值可以隐式地转换为整型,容易造成意外的转换和错误。
  2. 命名空间:
    enum class 的枚举值是限定在该枚举类型的命名空间中的。要访问枚举值需要使用 EnumName::ValueName 的形式。
    enum 的枚举值直接存在于全局命名空间中,可以直接使用 ValueName 的形式访问。
  3. 默认基础类型:
    enum class 的默认基础类型是 int。但可以使用 enum class EnumName : underlying_type; 的形式指定其他整数类型作为基础类型。
    enum 的默认基础类型也是 int,但不能直接指定其他基础类型。
  4. 作用域:
    enum class 的作用域仅限于该枚举类型本身。
    enum 的作用域会"污染"全局命名空间。

注意:避免使用无限定作用域的枚举

3.枚举类的基础类型

  • 必须是整数类型(char、short、long、…)
  • 默认是int型
// 7个值 ⇒ char类型应该足够了
enum class day : char {mon, tue, wed, thu, fri, sat, sun
};
// 不超过10,000 ⇒ short类型应该足够了
enum class language_ISO639 : short {abk, aar, afr, aka, amh, ara, arg,};

4.自定义枚举类映射

  • 可以显式设置枚举类值
  • 不需要以 0 开头
  • 某些值可以省略
  • 可以是部分的(只有一些具有枚举值的枚举器)

注意:如果显式设置枚举类的枚举值,请对所有枚举类的枚举执行此操作

enum class month {jan = 1, feb = 2, mar = 3, apr = 4,  may = 5,  jun = 6,  jul = 7, aug = 8, sep = 9, oct = 10, nov = 11, dec = 12 
};
enum class flag {A = 2, B = 8, C = 5, D, E, F = 25
};

5.和基础类型的互相转换

enum class month {jan = 1, feb = 2, mar = 3, apr = 4,  may = 5,  jun = 6,  jul = 7, aug = 8, sep = 9, oct = 10, nov = 11, dec = 12 
};
枚举 → 整数整数→枚举
int i = static_cast(month::mar);
// i: 3
int i = 0;
cin >> i;
// 确定 i ≥ 1 and ≤ 12 …
month m1 = static_cast(i);

附上原文链接
如果文章对您有用,请随手点个赞,谢谢 ^_^ !
不来张图片就文章标题就很丑!
在这里插入图片描述

http://www.yayakq.cn/news/377727/

相关文章:

  • wordpress能做交互类网站湖南 网站备案
  • 教做幼儿菜谱菜的网站手机优化大师下载安装
  • wordpress 添加固定字段北京网站seo外包
  • 湖南网站开发 岚鸿高端网站建设哪家便宜
  • 惠州网站优化建设html5是什么意思
  • 给厂家做代理上什么网站论坛网站文本抓取怎么做
  • 网页站点的用途哪里有国内网站建设公司
  • 视频网站开发需要什么语言聊城网站建设的地方
  • 潍坊网站建设培训班cms网站建设
  • 仿站小工具+wordpressapp营销策略有哪些
  • 云南网站建设电话百度如何免费推广
  • 文化传媒主播公司 东莞网站建设ftp地址格式怎么写
  • 用电脑怎么做网站猴痘的预防措施
  • 连云港外贸网站建设电商网站开发的背景
  • 自己做网站需不需要钱做海报的网站类似于创客贴
  • 现在什么网站比较火做推广7天学会自媒体短视频制作
  • 如何做阿里巴巴企业网站公司做网站有什么用
  • 网站开发移动app网站结构有哪些类型
  • 网站怎样做排名免费建网
  • 怎样在浏览器上找网站wordpress修改后台管理地址=
  • 博客网站开发背景小程序营销策划方案
  • 盐城哪家做网站的正规搜索引擎优化的方法有哪些?
  • 淘宝api 做网站工商服务网
  • 自己做的网站把密码改忘了怎么办淘宝客网站怎么建设
  • 电商网站开发代码合肥做网站的公司讯登
  • php 做网站佛山新网站建设机构
  • 珠海模板建站平台wordpress学生信息管理系统 php
  • 赤峰市住房和城乡建设局官方网站可拖拽建设网站没有了吗
  • 汉川网站推广服务aspcms网站地图模板
  • .net微信网站开发网站建设将来有什么发展