在c++中主要有四種強制型別轉換:static_cast,reinterpret_cast,const_cast,dynamic_cast。
1)static_cast(a)
將位址a轉換成型別t,t和a必須是指標、引用、基本資料型別或列舉型別。在執行時轉換過程中,不進行型別檢查來確保轉換的安全性。
class2)dynamic_cast(a)b ;class d : public
b ;void f(b* pb, d*pd)
完成類層次結構中的提公升,t必須是乙個指標、引用或無型別的指標。a必須是決定乙個指標或引用的表示式。
表示式dynamic_cast(a) 將a值轉換為型別為t的物件指標。如果型別t不是a的某個基型別,該操作將返回乙個空指標。
class3)const_cast(a)a ;class
b ;void
f()
去掉型別中的常量,除了const或不穩定的變址數,t和a必須是同型別。
表示式const_cast(a)被用於從乙個類中去除以下屬性:const、volatile和_unaligned。
class4)reinterpret_cast(a)a ;void
f()
任何指標都可以轉換成其它型別的指標,t必須是乙個指標、引用、算術型別、指向函式的指標或指向乙個類成員的指標。
表示式reinterpret_cast(a)能夠用於將char*到int*,或者one_class*到unrelated_class*等類似這樣的轉換,因此是不安全的。
classa ;class
b ;void
f()
C 中四大強制型別轉換!
c 中有四中強制型別轉換 static cast,const cast,reinterpret cast,dynamic cast,下面來逐一解釋。1 static cast a 將位址a轉換成型別t,t和a必須是指標 引用 基本資料型別或列舉型別。在執行時轉換過程中,不進行型別檢查來確保轉換的安全...
C 四大型別轉換
c 是一門強型別語言 相比c 來說c語言是弱型別語言 不同自定義型別之間的轉換必須進行顯式轉換。c 中也有隱式型別轉換,所以關於c 到底是強型別語言還是弱型別語言是乙個比較尷尬的問題。c 中提供了四種轉換操作符來細分顯式型別轉換。因為是操作符,所以他們不屬於任何的namespace,也就不用包含任何...
C 四大型別轉換
c語言的型別轉換比較自由,但也帶來了一些問題,這些問題大多由程式設計師自行控制和解決。對於龐大的c 語言機制而言,這種簡單粗暴的型別轉換方式顯然是個巨大的負擔,因此c 引入4種型別轉換運算子,更加嚴格的限制允許的型別轉換,使轉換過程更加規範 dynamic cast 用於多型型別的轉換 static...