C 四種cast常用法

2021-10-02 00:27:22 字數 1157 閱讀 2958

用法:static_cast < type-id > ( expression )

1.用於類層次結構中基類和子類之間指標或引用的轉換。進行上行轉換(把子類的指標或引用轉換成基類表示)是安全的;進行下行轉換(把基類指標或引用轉換成子類表示)時,由於沒有動態型別檢查,所以是不安全的。

2.用於基本資料型別之間的轉換,如把int轉換成char,把int轉換成enum。這種轉換的安全性也要開發人員來保證。

用於各種隱式轉換,比如非const轉const,void*轉指標等, static_cast能用於多型向上轉化,如果向下轉能成功但是不安全,結果未知。

編譯器隱式執行的任何型別轉換都可以由static_cast來完成,比如int與float、double與char、enum與int之間的轉換等。

用法:dynamic_cast < type-id > ( expression )

常用於類層次結構中基類和子類之間指標或引用的轉換。進行上行轉換(把子類的指標或引用轉換成基類表示)和static_cast一樣;進行下行轉換(把基類指標或引用轉換成子類表示)時,有動態型別檢測,是安全的。其中指標型別轉型失敗時,返回null;引用型別轉型失敗時,丟擲bad_cast異常。

用於動態型別轉換,只能用於含有虛函式的類,用於類層次之間的向上和向下轉換,只能轉指標或引用,如果是非法的對於指標返回null,對於引用拋異常。

向上轉換:子類 轉向 基類

向下轉換: 基類 轉向 子類

它通過判斷在執行到該語句的時候變數的執行時型別 和要轉換的型別是否相同來判斷是否能夠向下轉換。

用法:reinpreter_cast (expression)

reinterpret_cast比起上面講到的兩個cast,適用範圍更加廣泛。它可以適用於任何型別指標之間的轉換。

該操作不會去進行動態型別或者靜態型別的檢測,它僅僅將值強行賦值過去。從某種意義上對編譯器進行了一種欺騙,同時也帶來了一定的不安全性。所有使用該型別的轉換時,要尊敬它(慎重一點)。

1.int和指標之間的相互轉換。

2.無關聯類指標之間的轉換。

幾乎什麼都可以轉,比如將int轉指標,可能會出問題,盡量少用;

顧名思義,它是去除修飾在物件上的const和volatile。(去掉const時,只能用它)

c的強制轉換表面上看起來功能強大什麼都能轉,但是轉化不夠明確,不能進行錯誤檢查,容易出錯。

C 四種cast轉換

c 中四種型別分別為 static cast dynamic cast const cast reinterpret cast 1.const cast 用於將const變數轉換為非const 2.static cast 用於各種隱式轉換,比如非const轉const,void 轉指標等,也可以用於...

C 中四種cast轉換

c 中四種型別轉換是 static cast,dynamic cast,const cast,reinterpret cast 1 static cast 用於各種隱式轉換,例如將非const轉換為const,void 轉指標 將void指標指向任意型別 等,用於多型向上轉化,如果向下轉能成功但是不...

C 四種cast操作符

t expression 或 t expression 函式風格 function style 兩種形式之間沒有本質上的不同。對於具有轉換的簡單型別而言 c 風格轉型工作得很好。然而,這樣的轉換符也能不分皂白地應用於類 class 和類的指標。ansi c 標準定義了四個新的轉換符 reinterp...