類指標的強制轉換

2021-10-07 21:38:53 字數 870 閱讀 9001

動態轉換dynamic_cast

只能從上轉換至下

eg:從父類指標轉換成子類的指標 否則報錯

class

bvirtual~b

()};

classd:

public b

void

test()

};intmain()

d*dp =

dynamic_cast

>

(bp);if

(dp ==

null

)else

return0;

}

靜態轉換static_cast

可以從下至上 不會報錯 但有訪問不到子類的內容

classb}

;classd:

public b};

intmain()

classb1}

;classb2}

;classd:

public b1,

public b2};

intmain()

執行結果:

255d010… //bp1 原始位址

255d030… // bp2 原始位址

255d010…// 強制轉換後 第乙個位址保持不變

255d02c…// 但出於第二繼承的父類 指標進行偏移

const相關的強制轉換

int

main()

指標強制轉換

c 和 c 的指標強制轉換時不太一樣的,c 提供了4中型別,用於更加精細化控制指標的強制轉換。1 指標轉換原理 討論指標的強制轉換之前,我們先要理解清楚指標的根本含義。最通俗的解釋,指標即是位址,但是,指標絕不僅僅只是位址。1 指標存著所指物件位址 2 指標存著所指物件的型別和型別大小 試想我們定義...

指標強制轉換

指標強制轉換在指令變數賦值上,只是編譯器的乙個善意的提醒,在組合語言中,和不加強制轉換的指令時一樣的,並沒有多產生指令。強制轉換後的影響不是在轉換的時候發生,而是在用轉換後的身份去訪問記憶體時體現到了指令中。例子 6 int i globle variable 7 int pi globle var...

指標的強制轉換

前面曾經講過,如果指標變數指向的變數型別相同,兩個指標變數可以互相賦值。如果指向的變數型別不同,可以先對指標進行型別強制轉換。下面用乙個具體的例子說明 main 程式執行的結果為 pl aaaabbbb pn bbbb pn aaaa 如圖所示,long型變數num在記憶體占用4個位元組,假設首位址...