<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    C++空類以及沒有成員變量的類的大小

    • 發布:達內
    • 來源:達內
    • 時間:2015-01-13 16:44

    關于C++中空類的大小為1,我們大家都有所了解,但是除了空類之外的其他一些沒有成員變量的類的大小,還是有很多不明之處的。

    我們來看如下一個例子:

    #include

    using namespace std;

    class a {};

    class b{};

    class c :public a{

    virtual void fun() = 0;

    };

    class d :public b, public c{};

    int main()

    {

    cout << "sizeof(a)" << sizeof(a) << endl;

    cout << "sizeof(b)" << sizeof(b) << endl;

    cout << "sizeof(c)" << sizeof(c) << endl;

    cout << "sizeof(d)" << sizeof(d) << endl;

    getchar();

    return 0;

    }

    程序執行的輸出結果為:

    sizeof(a)=1

    sizeof(b)=1

    sizeof(c)=4

    sizeof(d)=8

    為什么會出現這種結果呢?初學者肯定會很煩惱是嗎?類a,b明明是空類,它的大小應該為為0,為什么 編譯器輸出的結果為1呢?這就是我們剛才所說的實例化的原因(空類同樣可以被實例化),每個實例在內存中都有一個獨一無二的地址,為了達到這個目的,編譯器往往會給一個空類隱含的加一個字節,這樣空類在實例化后在內存得到了獨一無二的地址,所以a,b的大小為1。

    而類c是由類a派生而來,它里面有一個純虛函數,由于有虛函數的原因,有一個指向虛函數表的指針(vptr,有多個虛函數仍然是只有一個指針),在32位的系統分配給指針的大小為4個字節,所以最后得到c類的大小為4。

    類d的大小更讓初學者疑惑吧,類d是由類b,c派生而來的,它的大小應該為二者之和5,為什么卻是8呢?這是因為為了提高實例在內存中的存取效率,內存中會有數據對齊,于是類的大小往往被調整到4字節的整數倍。并采取就近的法則,往大的方向取最近的倍數,就是該類的大小,所以類d的大小為8個字節(假如d由3個空類和c派生而來,仍然是8)。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:達內C語言:結構體的對齊原則
    下一篇:C++設計模試實現-State

    超全的C語言標識符知識

    C指針——指針類型轉換

    C指針——指針和結構類型的關系

    C指針——數組和指針的關系

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>