C++ Primer 笔记——枚举类型
1.和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。
2.C++包含两种枚举:限定作用域的和不限定作用域的。C++11新标准引入了限定作用域的枚举类型。
enum class /*struct*/ MyEnum { A = }; // 限定作用域的枚举
enum class /*struct*/ MyEnum1 { A = }; // 限定作用域的枚举可以有重复的名字,使用时也必须加上作用域
enum MyEnum2 { B = }; // 不限定作用域的枚举
enum MyEnum3 { B = }; // 不限定作用域的枚举不能有重复的名字
enum {test = } t,t1; // 未命名的不限定作用域的枚举,只能在定义是就定义对象
3.默认情况下,枚举值从0开始,依次加1,如果没有显示提供值,就在前一个枚举值的基础上加1。枚举成员是const的。
4.只要enum有名字,我们就能定义并初始化该类型的成员。想要初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象。
5.一个不限定作用域的枚举类型的对象或枚举成员自动的转成整型。
6.在C++11新标准中,我们可以在enum的名字后加上冒号以及我们想在该enum中使用的类型。对于不限定作用域的枚举类型来说,其枚举成员不存在默认类型,我们只知道成员的潜在类型足够大,肯定能容纳枚举值。如果我们指定了潜在类型,则一旦超出范围将引发错误。
enum test : long
{
A = ,
B
};
7.在C++11 新标准中,我们可以提前声明enum。enum的前置声明必须指定其成员的大小。
enum test : long; // 不限定作用域的,必须指定成员类型
enum class test1; // 限定作用域的枚举类型可以使用默认成员类型int
8.int值不可以做以enmu为形参的函数的实参,当enum做形参时,enum的值提升成int或更大的整型,实际提升的结果由枚举类型的潜在类型决定。
C++ Primer 笔记——枚举类型的更多相关文章
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- c语言学习笔记 - 枚举类型
今天学习了c语言的枚举类型的使用,可能是PHP里没使用过,开始看的时候还是觉得有点怪,后来做了下例子才理解,这里做个笔记记录一下. #include <stdio.h> enum anim ...
- Java学习笔记-枚举类型
枚举类型 枚举类型就是预先定义的一类常量集合,如一周的时间.水果的类型等.需要注意的几点内容如下: 定义枚举类时,Java默认继承java.lang.Enum,所以定义的枚举类不能继承其他类型: 枚举 ...
- CLR笔记-枚举类型
class Program { static void Main(string[] args) { Color color = Color.Red; Console.WriteLine(color.T ...
- Java编程思想学习笔记——枚举类型
前言 关键字enum可以将一组具名的值有限集合创建一种为新的类型,而这些具名的值可以作为常规的程序组件使用. 正文 基本enum特性 调用enum的values()方法可以遍历enum实例,value ...
- Java开发笔记(五十六)利用枚举类型实现高级常量
前面介绍了联合利用final和static可实现常量的定义,该方式用于简单的常量倒还凑合,要是用于复杂的.安全性高的常量,那就力不从心了.例如以下几种情况,final结合static的方式便缺乏应对之 ...
- JavaScript学习笔记-实现枚举类型,扑克牌应用
//实现枚举类型,扑克牌应用 function creatEnum(p){ //构造函数 var Enumeration = function(){throw 'can not Ins ...
- 【Swift学习笔记00】——enumeration枚举类型遵循协议protocol
Apple官方文档:The Swift Programming LanguageProtocols and Extensions一节的小节练习,要求自行定义一个enumeration枚举类型,并且遵循 ...
- Java 学习笔记 执行外部命令 包装类 枚举类型
执行外部命令 Runtime只能通过静态方法getRuntime获得,可以用来执行外部的命令 Runtime runtime = Runtime.getRuntime(); runtime.exec( ...
随机推荐
- Linux C++ TCP Socket传输文件或图片实例
环境:Linux 语言:C++ 通信方式:TCP 下面用TCP协议编写一个简单的服务器.客户端,其中服务器端一直监听本机的6666号端口.如果收到连接请求,将接收请求并接收客户端发来的消息:客户端与服 ...
- 搭建ubuntu14.04服务器必备环境
1. 设置网络 设置网络时,一定要设置好网卡,第一个网卡一定要设置为‘br0’(如下图),设置为其他的上不去网. 修改网络配置文件,命令:sudo gedit /etc/network/interf ...
- pythonのgevent同步异步区别
#!/usr/bin/env python from urllib import request import gevent from gevent import monkey import time ...
- 通过SecureCRT连接虚拟机
继续上一篇: http://www.cnblogs.com/CoolJayson/p/7430421.html 上一篇配置了虚拟机网络环境, 实际开发中通常使用SecureCRT或Xshell等连接L ...
- SSIS服务无法登录的解决方案
现象1:登录SSIS报权限认证失败. 授予对 Integration Services 服务的访问权限 运行 Dcomcnfg.exe. Dcomcnfg.exe 提供用于修改注册表中的某些设置的用户 ...
- Android软键盘在清单文件中所有配置含义
android:windowSoftInputMode 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事情: 1> 软键盘的状态——是否它是隐藏或显示——当活动 ...
- IObservable 接口
转载自:https://jingyan.baidu.com/article/d3b74d64ac3b6c1f77e609c1.html 方法/步骤 IObserver<T> 和 I ...
- Liunx 网络神器之抓包 --tcpdump
作者:邓聪聪 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中 ...
- boost::asio实现一个echo服务器
以前使用ACE实现Server框架,但是觉得太笨重,决定采用boost.asio来写服务器程序: 1.服务器构建在linux上面:当然也可以在windows下运行 2.io部分采用非阻塞模式.业务逻辑 ...
- hibernate框架学习之多表查询helloworld
package cn.itcast.h3.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Se ...