溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么

發(fā)布時(shí)間:2022-01-14 17:11:22 來源:億速云 閱讀:159 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章的內(nèi)容主要圍繞const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么進(jìn)行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學(xué)習(xí),值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!

     C++是一種強(qiáng)類型語言,對(duì)類型的檢查非常嚴(yán)格,我們可以使用C語言中的(NewType)Expression來對(duì)某個(gè)變量或者表達(dá)式返回值進(jìn)行強(qiáng)轉(zhuǎn),也可以使用C++中提供的新式轉(zhuǎn)換操作符:const_cast,dynamic_cast,reinterpret_cast,static_cast。下面介紹著四種轉(zhuǎn)換使用的不同場景。

一,const_cast

     const_cast顧名思義,用來將對(duì)象的常亮性轉(zhuǎn)除,使常亮可以被修改。const_cast(varible)中的type必須是指針,引用,或者指向?qū)ο箢愋统蓡T的指針。比如以下用法是錯(cuò)誤的:
const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么
     將int改為int&就可以正常編譯通過,且輸出a值為4:
const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么
     定義三個(gè)類,父類A,子類B和C,B和C中分別有不同的成員函數(shù)TestB()和TestC(),然后再用A指針分別指向new出來的A,B,C對(duì)象,放入一個(gè)數(shù)組:
const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么
     此時(shí)str和p的值時(shí)完全相同的,reinterpret_cast的作用是說將指針str的值以二進(jìn)制的方式解釋為整型。
     這種操作,我在實(shí)際項(xiàng)目中和從來沒有用到過,僅限于書面基礎(chǔ)知識(shí)的了解。

四,static_cast

     static_cast用來處理隱式轉(zhuǎn)換,等同于C語言中的(NewType)Expression強(qiáng)轉(zhuǎn),它可以將int轉(zhuǎn)為float,也可以將char*轉(zhuǎn)為int,將指向基類的指針轉(zhuǎn)為一個(gè)指向子類的指針,同時(shí)可以將non-const轉(zhuǎn)為const對(duì)象,但是它不能將一個(gè)const對(duì)象轉(zhuǎn)為non-const(這個(gè)是const_cast的功能)。

感謝你的閱讀,相信你對(duì)“const_cast,dynamic_cast,reinterpret_cast,static_cast四種轉(zhuǎn)換的區(qū)別是什么”這一問題有一定的了解,快去動(dòng)手實(shí)踐吧,如果想了解更多相關(guān)知識(shí)點(diǎn),可以關(guān)注億速云網(wǎng)站!小編會(huì)繼續(xù)為大家?guī)砀玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI