當前位置:編程學習大全網 - 編程軟體 - 誰能幫我解釋壹下關於類對象大小的問題?

誰能幫我解釋壹下關於類對象大小的問題?

就是這個意思。

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++思考》

  • 上一篇:c語言入門到精通要學多久?
  • 下一篇:10_Pytest框架
  • copyright 2024編程學習大全網