深入C++四種強制類型轉換的總結
更新時間:2013年05月16日 11:07:54 作者:
本篇文章是對C++中四種強制類型轉換進行了詳細的分析介紹,需要的朋友參考下
c++中提供了四種新的強制轉換分別是:const_cast、dynamic_cast、reinterpret_cast、static_cast.
這四種轉換類型,每一種都適用于特定的目的:
const_cast 一般用于強制取消對象的常量性。它是唯一能夠做到這一點的C++風格的強制轉型。
dynamic_cast 主要用于執(zhí)行"安全向下轉型",也就是說,要確定一個對象是否是一個繼承體系中的一個特定類型。它是唯一不能用舊風格語法執(zhí)行強制轉型。
reinterpret_cast 是特意用于底層轉型,導致實現(xiàn)以來的結果,例如,將一個指針轉換為一個整數(shù)。這樣的強制轉換在底層代碼外英愛極為罕見。
static_cast 可以用于強制隱型轉換,如non-const對象轉換為const對象,int轉換為double等。它還可以用于很多這樣的轉換的反向轉換,例如:void*指針轉型為有類型的指針,基指針轉換為派生類指針,但是它不能講一個const轉換為non-const,它最接近C風格的轉換。
這四種轉換類型,每一種都適用于特定的目的:
const_cast 一般用于強制取消對象的常量性。它是唯一能夠做到這一點的C++風格的強制轉型。
dynamic_cast 主要用于執(zhí)行"安全向下轉型",也就是說,要確定一個對象是否是一個繼承體系中的一個特定類型。它是唯一不能用舊風格語法執(zhí)行強制轉型。
reinterpret_cast 是特意用于底層轉型,導致實現(xiàn)以來的結果,例如,將一個指針轉換為一個整數(shù)。這樣的強制轉換在底層代碼外英愛極為罕見。
static_cast 可以用于強制隱型轉換,如non-const對象轉換為const對象,int轉換為double等。它還可以用于很多這樣的轉換的反向轉換,例如:void*指針轉型為有類型的指針,基指針轉換為派生類指針,但是它不能講一個const轉換為non-const,它最接近C風格的轉換。
相關文章
C++中set/multiset容器詳解(附測試用例與結果圖)
set/multiset屬于關聯(lián)式容器,底層結構是用二叉樹實現(xiàn),下面這篇文章主要給大家介紹了關于C++中set/multiset容器的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-02-02
C++ 中的虛函數(shù)表及虛函數(shù)執(zhí)行原理詳解
這篇文章主要介紹了C++ 中的虛函數(shù)表及虛函數(shù)執(zhí)行原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03

