空類內存sizeof

空類內存sizeof

class A
{};
int main(void)
{ A a;
printf("%d\n",sizeof(a));
return 0;
}

運行結果爲
這裏寫圖片描述
原因是在空類實例如果不在內存中佔一定的空間,則無法使用這些實例。

若在類里加成員函數,而不加成員變量,則實例所佔空間還是1,因爲調用函數只需要知道函數地址即可,函數地址只需要知道實例的類即可。

#include<stdio.h>
class A
{public:
     int fun(int a)
    {printf("dd");
    }
};
int main(void)
{ A a;
  printf("%d\n",sizeof(a));
  printf("%d\n",sizeof(A));
  return 0;
  }

這裏寫圖片描述

若類裏增加虛成員函數,

#include<stdio.h>
class A
{public:
    virtual int fun(int a)
    {printf("dd");
        return 0;
    }
};
int main(void)
{ A a;
  printf("%d\n",sizeof(a));
  printf("%d\n",sizeof(A));
  return 0;
  }

則運行結果爲
這裏寫圖片描述
因爲存在虛函數的類的實例中會添加一個指向虛函數表的指針,在32位系統中指針佔4字節。

發佈了25 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章