C++類對象大小(1)

      網友投稿 915 2025-04-02

      1、 類的大小計算的時候,只包括以下內容:

      1 類的非靜態成員數據的類型大小之和.

      2 如果有虛函數的話,還要加上指向虛函數的指針(vptr)大小

      3 基類大小

      4 邊緣調整(字節對齊)后的大小

      5 與類中的構造函數,析構函數以及其他的成員函數無關.

      2、空類的大小

      空類的大小為1

      #include using namespace std; class A { }; int main(void) { cout << sizeof(A) << endl; }

      1

      2

      3

      4

      5

      6

      C++類對象的大小(1)

      7

      8

      9

      10

      11

      輸出結果:1

      為什么空類的大小為1呢:

      深度探索c++對象模型中是這樣說的:

      那是被編譯器插進去的一個char ,使得這個class的不同實體(object)在內存中配置獨一無二的地址。

      也就是說這個char是用來標識類的不同對象的,通俗點講就是:你有一套房,房子面積不能為0吧,為0的話,那就說明你沒有房;

      從網上找到我個人比較滿意的答案:這就是實例化的原因(空類同樣可以被實例化),每個實例在內存中都有一個獨一無二的地復址,為了達到這個目的,編譯器往往會給一個空類或空結構體(C++中結構體也可看為制類)隱含的加一個字節,這樣空類或空結構體在實例化后在內存得到了獨一無二的地址,所以空類所占的內存大小是1個字節zd。

      3、類的成員函數,不占類對象的大小

      C++程序的內存格局通常分為四個區:全局數據區(data area),代碼區(code area),棧區(stack area),堆區(heap area)(即自由存儲區)。全局數據區存放全局變量,靜態數據和常量;所有類成員函數和非成員函數代碼存放在代碼區;為運行函數而分配的局部變量、函數參數、返回數據、返回地址等存放在棧區;余下的空間都被稱為堆區。根據這個解釋,我們可以得知在類的定義時,類成員函數是被放在代碼區,而類的靜態成員變量在類定義時就已經在全局數據區分配了內存,因而它是屬于類的。對于非靜態成員變量,我們是在類的實例化過程中(構造對象)才在棧區或者堆區為其分配內存,是為每個對象生成一個拷貝,所以它是屬于對象的。

      當我們實例化一個對象的時候,因為這個對象是用類定義的,那么它理所當然擁有了這個類的數據和函數。但是,一般情況下,不同的對象,他們的的數據值不同,但是函數的代碼都相同。所以,為了節約存儲空間(想象一下我們如果定義了100個對象,那么用100段內存空間存儲相同的代碼,豈不是很浪費?),我們讓成員函數的代碼共享。

      我們把成員函數的代碼存儲在對象空間之外。換句話說,成員函數的代碼,都不占據對象的存儲空間。它會被存在其他地方。

      C++

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎么在每天的某個時刻自動打開特定excel工作簿
      下一篇:wps制作精美的電影膠片效果教程
      相關文章
      久久无码av亚洲精品色午夜| 亚洲国产模特在线播放| 亚洲自偷自偷在线成人网站传媒 | 亚洲av永久无码精品秋霞电影秋| 亚洲国产中文在线视频| 亚洲春色在线观看| 亚洲啪啪免费视频| 亚洲综合免费视频| 亚洲精品成人图区| 亚洲午夜电影在线观看| 亚洲制服丝袜第一页| 亚洲偷偷自拍高清| 亚洲欧美aⅴ在线资源| 亚洲成在人线aⅴ免费毛片| 亚洲AⅤ男人的天堂在线观看| 久久人午夜亚洲精品无码区| 激情婷婷成人亚洲综合| 亚洲国产精品日韩专区AV| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产成人综合亚洲亚洲国产第一页| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久亚洲国产成人精品无码区| 亚洲精品成人网站在线观看| 亚洲AV无码一区二区三区DV | 亚洲国产精品一区二区久久hs | 色五月五月丁香亚洲综合网| 亚洲成人高清在线| 中文字幕亚洲综合久久菠萝蜜| 亚洲欧洲日产国码无码久久99 | 亚洲AV无码一区二区三区网址| 噜噜噜亚洲色成人网站| 亚洲伊人久久成综合人影院| 亚洲精品亚洲人成在线观看| 亚洲国产老鸭窝一区二区三区| 亚洲精品在线不卡| 亚洲欧洲免费无码| 亚洲精品麻豆av| 久久久久亚洲av无码专区蜜芽 | 亚洲一级片在线播放| 亚洲精品无码高潮喷水A片软| 亚洲AV蜜桃永久无码精品|