zoukankan      html  css  js  c++  java
  • enum hack

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

  • 相关阅读:
    nessus 安装
    firefox SSL_ERROR_RX_RECORD_TOO_LONG burpsuit 报错 解决方案
    Vmware 15 新建虚拟机黑屏
    esp8266 IOT Demo 固件刷写记录
    elk + suricata 实验环境详细安装教程
    停更申明
    求二叉树的深度
    方差
    链表的基本排序
    正态分布及3Sigma原理
  • 原文地址:https://www.cnblogs.com/Yogurshine/p/3554330.html
Copyright © 2011-2022 走看看