[C++知識點]2015.4.18

1.「static_cast/強制轉換」後普通函數、虛函數的表現html

A基類函數

B子類htm

實例aPtr:將B實例強制抓換獲得的A實例blog

實例bPtr:將A實例強制轉換獲得的B實例ip

clipboard

總結:內存

(1)get

aPtr由於是從B實例強制轉換過來的,因此虛函數始終調用B的虛函數實現it

bPtr由於是從A實例強制轉換過來的,因此虛函數始終調用A的虛函數實現ast

(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

clipboard[1]

32位和64位其餘區別見:

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

32位    64位

clipboard[2]

clipboard[3]clipboard[4]

相關文章
相關標籤/搜索