c 中類長度解析

2022-02-05 10:57:10 字數 1719 閱讀 9124

通常我們定義乙個類,它所佔的空間有多大呢?

首先我們看一下下面的這個類

class

a;

void func2(void

);public

:

intnumber;

};

class

b;

void func2(void

);public

:

char

number;

intnumber1;

};

我們輸出這兩個類的長度

1 #include 2

classa;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()

view code

得到結果:

至於為什麼第二個是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...