博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
enum hack
阅读量:4456 次
发布时间:2019-06-08

本文共 728 字,大约阅读时间需要 2 分钟。

关于占用内存的大小,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。

转载于:https://www.cnblogs.com/Yogurshine/p/3554330.html

你可能感兴趣的文章
UML类图五种关系与代码的对应关系
查看>>
如何理解作用域
查看>>
从无到满意offer,你需要知道的那些事
查看>>
P1516 青蛙的约会 洛谷
查看>>
SDOI2011 染色
查看>>
JQuery EasyUI combobox动态添加option
查看>>
面向连接的TCP概述
查看>>
前端快捷方式 [记录]
查看>>
亲测可用,解决端口被占用的指令!!
查看>>
MySQL--视图、触发器、事务、存储过程、内置函数、流程控制、索引
查看>>
Django--数据库查询操作
查看>>
自定义配置文件的使用
查看>>
js-20170609-运算符
查看>>
算法笔记_065:分治法求逆序对(Java)
查看>>
MSP430FLASH小结
查看>>
STM32 ADC转换时间
查看>>
结合实际业务场景聊一聊MVP模式的应用
查看>>
我爱 哐 哐 哐,我是哐人类!-【废话区】
查看>>
WinPE启动U盘的制作方法与软件下载(通用PE工具箱/老毛桃/大白菜WinPE)(转载)...
查看>>
行为型设计模式之5--中介者模式
查看>>