由於類的成員較多,所以很容易將類物件到底佔多少記憶體弄混,所以自己寫這篇文章,看下編譯器到底給類物件分配多少記憶體空間。
#include
using namespace std;
class a
;int main()
;int main()
;int main()
;int main()
;int main()
{ a a;
cout<
<
執行結果還是28,可見靜態資料成員屬於類,而不是某一特定物件,也並不儲存在某一特定物件中,不佔記憶體空間。
#include
using namespace std;
class a
{ public:int a;
char b;
long c;
bool d;
long double e;
static int f;
int compare(int i,int j){return i
執行結果還是28,所以說普通成員函式是不佔記憶體空間的。
五、接下來會寫靜態成員函式,虛成員函式,子類物件的記憶體空間問題
C 中類所佔記憶體空間大小
學習虛繼承知識的時候,無意中發現了關於c 類所需記憶體的面試題,通過sizeof 計算類所需的記憶體位元組數。當時自己就懵了,因為學習c 的時候,就知道類在宣告時是不會分配記憶體空間的還以為自己學習的東西出錯,還來才知道sizeof 作用 sizeof是 c c 中的乙個操作符 operator 簡...
C 中的類所佔記憶體空間總結
類所佔記憶體的大小是由成員變數 靜態變數除外 決定的,成員函式 這是籠統的說,後面會細說 是不計算在內的。摘抄部分 成員函式還是以一般的函式一樣的存在。a.fun 是通過fun a.this 來呼叫的。所謂成員函式只是在名義上是類裡的。其實成員函式的大小不在類的物件裡面,同乙個類的多個物件共享函式 ...
C 中的類所佔記憶體空間總結
而我們訪問類的成員函式是通過類裡面的乙個指標實現,而這個指標指向的是乙個table,table裡面記錄的各個成員函式的位址。所以我們訪問成員函式是間接獲得位址的,這樣也就增加了一定的時間開銷,這也就是為什麼我們提倡把一些簡短的,呼叫頻率高的函式宣告為inline形式 內聯函式 一 class cba...