深入C++四種強(qiáng)制類(lèi)型轉(zhuǎn)換的總結(jié)
更新時(shí)間:2013年05月16日 11:07:54 作者:
本篇文章是對(duì)C++中四種強(qiáng)制類(lèi)型轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
c++中提供了四種新的強(qiáng)制轉(zhuǎn)換分別是:const_cast、dynamic_cast、reinterpret_cast、static_cast.
這四種轉(zhuǎn)換類(lèi)型,每一種都適用于特定的目的:
const_cast 一般用于強(qiáng)制取消對(duì)象的常量性。它是唯一能夠做到這一點(diǎn)的C++風(fēng)格的強(qiáng)制轉(zhuǎn)型。
dynamic_cast 主要用于執(zhí)行"安全向下轉(zhuǎn)型",也就是說(shuō),要確定一個(gè)對(duì)象是否是一個(gè)繼承體系中的一個(gè)特定類(lèi)型。它是唯一不能用舊風(fēng)格語(yǔ)法執(zhí)行強(qiáng)制轉(zhuǎn)型。
reinterpret_cast 是特意用于底層轉(zhuǎn)型,導(dǎo)致實(shí)現(xiàn)以來(lái)的結(jié)果,例如,將一個(gè)指針轉(zhuǎn)換為一個(gè)整數(shù)。這樣的強(qiáng)制轉(zhuǎn)換在底層代碼外英愛(ài)極為罕見(jiàn)。
static_cast 可以用于強(qiáng)制隱型轉(zhuǎn)換,如non-const對(duì)象轉(zhuǎn)換為const對(duì)象,int轉(zhuǎn)換為double等。它還可以用于很多這樣的轉(zhuǎn)換的反向轉(zhuǎn)換,例如:void*指針轉(zhuǎn)型為有類(lèi)型的指針,基指針轉(zhuǎn)換為派生類(lèi)指針,但是它不能講一個(gè)const轉(zhuǎn)換為non-const,它最接近C風(fēng)格的轉(zhuǎn)換。
這四種轉(zhuǎn)換類(lèi)型,每一種都適用于特定的目的:
const_cast 一般用于強(qiáng)制取消對(duì)象的常量性。它是唯一能夠做到這一點(diǎn)的C++風(fēng)格的強(qiáng)制轉(zhuǎn)型。
dynamic_cast 主要用于執(zhí)行"安全向下轉(zhuǎn)型",也就是說(shuō),要確定一個(gè)對(duì)象是否是一個(gè)繼承體系中的一個(gè)特定類(lèi)型。它是唯一不能用舊風(fēng)格語(yǔ)法執(zhí)行強(qiáng)制轉(zhuǎn)型。
reinterpret_cast 是特意用于底層轉(zhuǎn)型,導(dǎo)致實(shí)現(xiàn)以來(lái)的結(jié)果,例如,將一個(gè)指針轉(zhuǎn)換為一個(gè)整數(shù)。這樣的強(qiáng)制轉(zhuǎn)換在底層代碼外英愛(ài)極為罕見(jiàn)。
static_cast 可以用于強(qiáng)制隱型轉(zhuǎn)換,如non-const對(duì)象轉(zhuǎn)換為const對(duì)象,int轉(zhuǎn)換為double等。它還可以用于很多這樣的轉(zhuǎn)換的反向轉(zhuǎn)換,例如:void*指針轉(zhuǎn)型為有類(lèi)型的指針,基指針轉(zhuǎn)換為派生類(lèi)指針,但是它不能講一個(gè)const轉(zhuǎn)換為non-const,它最接近C風(fēng)格的轉(zhuǎn)換。
您可能感興趣的文章:
- C++強(qiáng)制類(lèi)型轉(zhuǎn)換的四種方式
- 解析C++中四種強(qiáng)制類(lèi)型轉(zhuǎn)換的區(qū)別詳解
- 基于c++強(qiáng)制類(lèi)型轉(zhuǎn)換的(總結(jié))詳解
- C++中4種強(qiáng)制類(lèi)型轉(zhuǎn)換的區(qū)別總結(jié)
- C++超詳細(xì)講解強(qiáng)制類(lèi)型轉(zhuǎn)換
- C++ 強(qiáng)制類(lèi)型轉(zhuǎn)換詳解
- 淺談C++的語(yǔ)句語(yǔ)法與強(qiáng)制數(shù)據(jù)類(lèi)型轉(zhuǎn)換
- 關(guān)于C++的強(qiáng)制類(lèi)型轉(zhuǎn)換淺析
- C++強(qiáng)制類(lèi)型轉(zhuǎn)換詳細(xì)示例代碼
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)共享單車(chē)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)共享單車(chē)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C++中set/multiset容器詳解(附測(cè)試用例與結(jié)果圖)
set/multiset屬于關(guān)聯(lián)式容器,底層結(jié)構(gòu)是用二叉樹(shù)實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于C++中set/multiset容器的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
C++ 中的虛函數(shù)表及虛函數(shù)執(zhí)行原理詳解
這篇文章主要介紹了C++ 中的虛函數(shù)表及虛函數(shù)執(zhí)行原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單推箱子小游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)推箱子小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
C語(yǔ)言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式
這篇文章主要介紹了C語(yǔ)言之實(shí)現(xiàn)單鏈表指定結(jié)點(diǎn)的插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

