在看effective c++的时候,其中第二条边指出。尽量使用const ,enum代替define。在写程序的时候,需要入参为设备类型,第一反应是枚举一个设备类型,并以名字命名。但是有一个问题挺困惑的,类中的枚举到底是以什么形式存在的?枚举变量需不需要分配内存?

带着这个问题,咱们来做一个实验。
  1. class test
  2. {
  3. public:
  4. enum type{One,Two, Three};
  5. private:
  6. };
  7. int _tmain(int argc, _TCHAR* argv[])
  8. {
  9. cout << sizeof(test)<<endl;
  10. return 0;
  11. }
输出:

        想想其实也很容易明白,此时就是在类的内部声明了一个枚举类型。并没有声明这个枚举类型的变量。此时如果加上一个枚举类型的变量的声明,再来测试一下这个类的大小。其中枚举为公有的,我们试着用 类::enum值 调用该枚举值,看其是否能够被调用。
  1. class test
  2. {
  3. public:
  4. enum type{One=2,Two, Three};
  5. test():t(One)
  6. {
  7. }
  8. type getT()
  9. {
  10. return t;
  11. }
  12. private:
  13. type t;
  14. };
  15. int _tmain(int argc, _TCHAR* argv[])
  16. {
  17. test s;
  18. cout << sizeof(test)<<endl;
  19. cout<<s.getT()<<endl;
  20. cout << test::Three<<endl;
  21. return 0;
  22. }
输出:
此时类的大小是一个int型变量的大小。取得的枚举是一个整形。可以通过类域访问到枚举值。为什么通过 类::enum值可以访问枚举值?
因为该枚举是一个常量,在编译的时候已经被放入了常量区。调用的时候因此不需要该枚举的变量也可以调用。
注意:枚举类型不具备名字空间的作用。在一个作用域中在,如果两个枚举类型的值相同,则会编译出错。
  1. struct CEType
  2. {
  3. enum EType1 { e1, e2 };
  4. enum EType2 { e1, e2 };
  5. };
e1,e2名字相同程序会报错。
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/chengkeke/p/5417368.html

C++类中的枚举类型相关推荐

  1. java 枚举_Java中的枚举类型(Enum)详解

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

  2. 在java中关于枚举类型的特性_java枚举类型小结

    JDK5.0之前,我们一般选择使用 interface 来保存常量组,以此来弥补 JDK 中没有枚举类型的缺陷,从JDK5.0开始,Sun引进了一个全新的关键字 enum 来定义一个枚举类.同inte ...

  3. java 7种枚举类型_Java中的枚举类型

    枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...

  4. Java语言中的枚举类型

    枚举类型(Enumerated Type)在编程语言中常用,程序员必备食粮,下面随着我的思路来认识一下枚举类型. 是什么 枚举类型在java中是一种基本数据类型.它用于声明一组命名的常数,当一个变量有 ...

  5. pojo类中的布尔类型的变量为什么不能加is

    [强制] POJO类中的布尔类型的变量,都不不要加is,否则部分框架解析会引起序列化错误. 反例: 定义为基本数据类型boolean isSuccess:的属性,他的方法也是isSuccess();R ...

  6. asp.net网页编程 ASP.NET中绑定枚举类型

    asp.net网页编程 ASP.NET中绑定枚举类型<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office: ...

  7. 枚举类中获取枚举值的几种方法

    在开发的过程中我们经常会定义枚举类,枚举类中获取枚举值的方式也有很多种,下面我们就探究一下大家常用的几种方式: 枚举类 public enum TestEnum {ONE(1,"one&qu ...

  8. mysql 枚举 enum用法_mysql中的枚举类型ENUM的用法:

    mysql中的枚举类型ENUM的用法: (2010-06-18 13:44:13) mysql中的枚举类型ENUM的用法: mysql中的枚举类型ENUM是一个字符串对象,它的值是自表创建时在列规定中 ...

  9. java中的枚举类_java中的枚举类型

    java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...

最新文章

  1. Nanopore测序
  2. [生活化技术]组合模式 vs. 理发店价格表
  3. mac 思科 链路聚合_EtherChannel Cisco 端口聚合详解
  4. ML 04、模型评估与模型选择
  5. 浅入深出Vue:文章编辑
  6. G List it all
  7. Windows Phone 内容滑动切换实现
  8. 实现运动轨迹_【自动驾驶】运动规划丨速度规划丨时间维度
  9. Android WebView常见问题及解决方案汇总【很全很实用】
  10. 【玩转Atlas200DK系列】为Atlas200DK配置wifi外挂模块
  11. ubuntu14.04 caffe安装前先要将gcc版本降到4.7.x
  12. 利用栈来完成表达式求值
  13. 【PID控制与模糊PID控制的比较】(带仿真和代码链接)
  14. 基于Matlab的数字水印设计
  15. Win32创建异形窗口
  16. 征途LINUX服务端脚本技术,腾讯征途手游脚本 辅助基本语法
  17. 我真的很郁闷,应该振作起来的
  18. 嵌入式软件开发笔试面试知识点总结-Linux部分
  19. 【英语语法】句子类型
  20. Vijos - 想越狱的小杉(最短路)

热门文章

  1. 回顾 | AAAI 2019最佳论文公布,CMU、斯坦福、MIT上榜
  2. php内支持sqlite,PHP能不能和sqlite搭配
  3. 动手学pytorch之tensor数据(一)
  4. 全局路径规划:图搜索算法介绍3(A stars tie breaker)
  5. java自动获取ip_java自动获取电脑ip和MAC地址
  6. 客户组网服务案列_山西seo关键词排名优化案列
  7. 2016年系统集成项目管理工程师最新考试说明
  8. 命名实体识别之基本概念
  9. Could not open ServletContext resource [/WEB-INF/applicationContext.xml]”解决方案
  10. asp.net core 2.0 web api + Identity Server 4 + angular 5 可运行前后台源码