四大強制轉換符

2021-08-10 14:27:33 字數 884 閱讀 6460

在c++中主要有四種強制型別轉換:static_cast,reinterpret_cast,const_cast,dynamic_cast。

1)static_cast(a)

將位址a轉換成型別t,t和a必須是指標、引用、基本資料型別或列舉型別。在執行時轉換過程中,不進行型別檢查來確保轉換的安全性。

class

b ;class d : public

b ;void f(b* pb, d*pd)

2)dynamic_cast(a)

完成類層次結構中的提公升,t必須是乙個指標、引用或無型別的指標。a必須是決定乙個指標或引用的表示式。

表示式dynamic_cast(a) 將a值轉換為型別為t的物件指標。如果型別t不是a的某個基型別,該操作將返回乙個空指標。

class

a ;class

b ;void

f()

3)const_cast(a)

去掉型別中的常量,除了const或不穩定的變址數,t和a必須是同型別。

表示式const_cast(a)被用於從乙個類中去除以下屬性:const、volatile和_unaligned。

class

a ;void

f()

4)reinterpret_cast(a)

任何指標都可以轉換成其它型別的指標,t必須是乙個指標、引用、算術型別、指向函式的指標或指向乙個類成員的指標。

表示式reinterpret_cast(a)能夠用於將char*到int*,或者one_class*到unrelated_class*等類似這樣的轉換,因此是不安全的。

class

a ;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...