c++ class中成員函數,static變量在編譯時都不會被分配內存,只有實實在在的int,char,long,float,double等類型才會被分配內存,並且以當前字節長度最大
的類型來成倍分配內存,而虛函數同理也不會被分配內存,無論聲明多少個虛函數都如此,但是類中會存放一個虛指針,指向虛函數表,該虛函數表存放在內存中,
跟類地址無關的一個地址中,所以在計算class的sizeof的時候,成員函數、static變量,虛函數都不會被計算大小,只會計算int,char,long,float,double等類型加虛指針
的大小,在32位機器中,指針大小4個字節,而在64位機器中,指針大小8個字節,但是int在32位和64位機器下都是4個字節大小,下面附常用數據類型及對應字節數
32位編譯器: 64位編譯器:
char :1個字節 1個字節
char*(即指針變量): 4個字節(32位的尋址空間是2^32, 即32個bit,也就是4個字節。同理64位編譯器)8個字節
short int : 2個字節 2個字節
int: 4個字節 4個字節
unsigned int : 4個字節 4個字節
float: 4個字節 4個字節
double: 8個字節 8個字節
long: 4個字節 8個字節
long long: 8個字節 8個字節
unsigned long: 4個字節 8個字節
假若class為空,則分配的字節大小為1,表示該class的存在