1.如果妳熟悉C語言,C語言中有壹個庫函數叫sizeof()。對於32位編程,sizeof(char)為2,sizeof(int)為4。
2.所以,假設我們定義了壹個結構(C語言中的struct)。
結構測試
{
int I;
int j;
char k;
}
測試t;
此時,再次使用sizeof(t)時,得到10,因為Sizeof(I)+Sizeof(j)+Sizeof(k)= 4+4+2 = 10。
3.所以,面向對象引入了類的概念,如果我定義了壹個類(在C++中,struct和Class唯壹的區別就是默認的public和private)。
類別測試()
{
int I;
int j;
char k;
}
測試t;
那麽當我們現在是sizeof(t)的時候,結果會大於10,具體數值取決於不同的環境。
為什麽?因為c++引入了面向對象的概念,所以在面向過程(C)語言中,struct是壹個結構,總字節大小(內存空間)等於所有數據成員的字節大小之和(見2)。但是,在面向對象(C++)中,類有壹些其他信息,比如各種構造函數、析構函數和成員函數。C++會把這些函數的入口地址保存在壹個表中,這個表需要壹個指針指向它。指針需要壹定的字節空間。因此,類對象(t)的字節大小(sizeof(t))等於所有數據成員(I,j,k)的字節空間加上壹些用於存儲其他信息的“隱藏”字節空間,大於數據成員的字節空間之和。
具體信息請參考《用C++思考》