通常我們定義乙個類,它所佔的空間有多大呢?
首先我們看一下下面的這個類
classa;
void func2(void
);public
:
intnumber;
};
class我們輸出這兩個類的長度b;
void func2(void
);public
:
char
number;
intnumber1;
};
1 #include 2view codeclassa;7
void func2(void
);10
public:11
intnumber;
12};
13class
b;18
void func2(void
);21
public:22
char
number;
23int
number1;
24};
25int
main()
得到結果:
至於為什麼第二個是8,就是記憶體對齊的問題了,可以參考之前的記憶體申請的帖子。
我們發現,乙個類的長度是它的變數所占用的空間,也就是說函式是不占用空間的。
這是因為乙個類的變數時屬於物件的,而乙個類的函式是屬於這個類的。
我們接著看下面兩個類:
class按照下面的函式輸出,得到結果:a;
void func2(void
);public
:
intnumber;
};class
b;
virtual
void func2(void
);public
:
intnumber1;
};
我們發現,多了4個位元組。這是因為虛函式要為物件分配乙個虛函式表vptr,通過這個指標來呼叫虛函式。因此有虛函式的類,會多出乙個指標的空間。但僅僅分配乙個指標。比如第乙個函式會用vptr[1]來表示,第二個用vptr[2]來表示,而索引0是表的資訊。
如有不對的地方,還請多多指正。
C 中的CultureInfo類解析
cultureinfo類位於system.globalization命名空間內,這個類和命名空間許多人都不是很熟悉,實際我們在寫程式寫都經常間接性的接觸這個類,當進行數字,日期時間,字串匹配時,都會進行cultureinfo的操作,也就是說,也就是不同的cultureinfo下,這些操作的結果可能會...
深入解析C 中的string類
一,c語言的字串 在c語言裡,對字串的處理一項都是一件比較痛苦的事情,因為通常在實現字串的操作的時候都會用到最不容易駕馭的型別 指標。比如下面這個例子 example 1 char str 12 hello char p str p h 改變第乙個字母 example 2 char ptr hell...
Android中AsyncTask類解析
asynctask暫且翻譯為非同步任務 asynctask使ui執行緒的使用變得恰當和簡單。這個類允許在後台執行操作並且在ui執行緒呈現處理的結果,無需操作執行緒。乙個非同步任務是指在後台執行的執行緒,其執行結果在ui執行緒呈現。乙個非同步任務由3個泛型和4個步驟定義完成。用法 乙個asynctas...