enum hack
2024-08-27 05:00:20
关于占用内存的大小,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常用的例子。
- class AA{
- enumDefType{
- a =10,
- b =5
- };
- int arr[a];
- };
- class BB{
- enumDefType2{
- a =100,
- b2 =50
- };
- int arr[a];
- };
这也是在类中静态声明一个数组的好方法称为enum hack。
最新文章
- linux命令(6):rmdir 命令
- EntityFramework 启用迁移 Enable-Migrations 报异常 ";No context type was found in the assembly";
- 利用ajaxfileupload.js异步上传文件
- XMPP框架下微信项目总结(1)环境配置
- TCP和UDP的保护消息边界机制
- NGUI 学习笔记实战之二——商城数据绑定(Ndata)
- bnu A Matrix 北京邀请赛A题
- python 详解re模块
- 自问自答-hadoop自带哪些案例(0.20.2)
- Objective-C通过联合存储为类增加属性及原理解析
- java 打开浏览器 url
- SQL查询表,表的所有字段名,SQL查询表,表的所有字段名
- 安装mysql ,从 mysql-5.5.5 开始innodb作为默认的存储引擎了
- 使用storm分别进行计数和词频统计
- LeetCode之“动态规划”:Minimum Path Sum &;&; Unique Paths &;&; Unique Paths II
- Vue(十)生命周期
- PythonWEB框架之Flask
- 【亲测可用,亦可配置同一平台的不同账号,例如阿里云的两个不同账号】Windows下Git多账号配置,同一电脑多个ssh-key的管理
- oracle定时器job的使用
- javascript在IE下不能用 trim函数解决方法