关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换。但是enum类型的变量肯定是占内存的.

  • class A{
  • public:
  • //enum类型本身不占内存
  • enumEnumTest{
  • a =1,b =5};
  • };
  • class B{
  • public:
  • private:
  • //enum理想的变量会占用内存
  • enumEnumTest enumSample1;
  • };
  • int main()
  • {
  • cout <<"sizeof(Class A) = "<<sizeof(A)<< endl;
  • cout <<"sizeof(Class B) = "<<sizeof(B)<< endl;
  • return0;
  • }

结果A占1个字节,B占4个字节.

enum结构体定义的的确是常量,但并不是在预编译的时候进行替换,而是在编译时,从enum定义的常量存储区取定义的常量值。因此,同样的常量定义,如果用#define,代码中多处用到该常量的话,编译出来的会比用enum定义使用的常量存储区大。

,#define 定义的常量,在预编译的时候做了替换,而enum定义的常量,并不是在预编译的时候进行替换,只是在编译的时候,根据标识去常量区获取对应的值。

只是举个enum常用的例子。

  1. class AA{
  2. enumDefType{
  3. a =10,
  4. b =5
  5. };
  6. int arr[a];
  7. };
  8. class BB{
  9. enumDefType2{
  10. a =100,
  11. b2 =50
  12. };
  13. int arr[a];
  14. };
 

这也是在类中静态声明一个数组的好方法称为enum hack。

最新文章

  1. linux命令(6):rmdir 命令
  2. EntityFramework 启用迁移 Enable-Migrations 报异常 &quot;No context type was found in the assembly&quot;
  3. 利用ajaxfileupload.js异步上传文件
  4. XMPP框架下微信项目总结(1)环境配置
  5. TCP和UDP的保护消息边界机制
  6. NGUI 学习笔记实战之二——商城数据绑定(Ndata)
  7. bnu A Matrix 北京邀请赛A题
  8. python 详解re模块
  9. 自问自答-hadoop自带哪些案例(0.20.2)
  10. Objective-C通过联合存储为类增加属性及原理解析
  11. java 打开浏览器 url
  12. SQL查询表,表的所有字段名,SQL查询表,表的所有字段名
  13. 安装mysql ,从 mysql-5.5.5 开始innodb作为默认的存储引擎了
  14. 使用storm分别进行计数和词频统计
  15. LeetCode之“动态规划”:Minimum Path Sum &amp;&amp; Unique Paths &amp;&amp; Unique Paths II
  16. Vue(十)生命周期
  17. PythonWEB框架之Flask
  18. 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理
  19. oracle定时器job的使用
  20. javascript在IE下不能用 trim函数解决方法

热门文章

  1. FunGuild 数据库简介
  2. recovery中英对照表 recovery大全图解
  3. Objective-C语法之NSSortDescriptor
  4. 性能监控-TP理解
  5. Windows 7 完美安装 Visual C++ 6.0
  6. MyEclipse使用笔记
  7. 消息队列库——ZeroMQ
  8. opencv获取IP摄像头(IP-camera)实时视频流
  9. 通过phoenix在hbase上创建二级索引,Secondary Indexing
  10. log4j MDC用户操作日志追踪配置