[C++知識點]2015.4.18

來源:互聯網
上載者:User

標籤:

1.“static_cast/強制轉換”後普通函數、虛函數的表現

A基類

B子類

執行個體aPtr:將B執行個體強制抓換得到的A執行個體

執行個體bPtr:將A執行個體強制轉換得到的B執行個體

總結:

(1)

aPtr因為是從B執行個體強制轉換過來的,所以虛函數始終調用B的虛函數實現

bPtr因為是從A執行個體強制轉換過來的,所以虛函數始終調用A的虛函數實現

(2)

static_cast和強制轉換則根據轉換後的結果來進行調用

2.sizeof記憶體對齊

   步驟一:結構體內每個變數,有效對齊值=“min(當前位置的變數類型的長度, n)”獲得初步的size為num)

   步驟二:num根據“min(所有變數類型的最長長度, n)”補充對齊(到能被該值整除的地步)

範例:

#pragma pack(push, 4)

struct A{

    int a;

    short b;

    char c1;

    char c2[7];

    int d;

    char e;

}

步驟一:

記憶體配置如下:

a:  0 1 2 3 

b:  4 5 

c1: 6 

c2: 7 8 9 10 11 12 13

d:  16 17 18 19

e:   20

num=4+2+8+空白2+4+1=21

步驟二:

num需要填充到24才能被max(4, 4)整除,所以sizeof(A) = 24

32位和64位其他區別見:

http://www.cnblogs.com/sara-gcj/p/3324187.html

32位    64位

[C++知識點]2015.4.18

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.