C 型別轉換操作符 dynamic cast

2021-08-16 01:45:41 字數 640 閱讀 7577

dynamic_cast 顧名思義是支援動態的型別轉換,即支援執行時識別指標或引用所指向的物件。

dynamic_cast<>用於c++類繼承多型間的轉換,分為:

子類向基類的向上轉型(up cast)

基類向子類的向下轉型(down cast)

其中向上轉型不需要借助任何特殊的方法,只需用將子類的指標或引用賦給基類的指標或引用即可,dynamic_cast向上轉型其總是肯定成功的。

而向下轉換時要特別注意:dynamic_cast操作符,將基類型別的指標或引用安全的轉換為派生類的指標或引用。dynamic_cast將乙個基類物件指標(或引用)cast到繼承類指標,dynamic_cast會根據基類指標是否真正指向繼承類指標來做相應處理。這也是dynamic_cast與其他轉換不同的地方,dynamic_cast涉及執行時類別檢查,如果繫結到引用或指標的物件不是目標型別的物件,則dynamic_cast失敗。如果是指標型別失敗,則dynamic_cast的返回結果為0,如果是引用型別的失敗,則丟擲乙個bad_cast錯誤。

注意:dynamic_cast在將父類cast到子類時,父類必須要有虛函式。因為dynamic_cast執行時需要檢查rtti資訊。只有帶虛函式的類執行時才會檢查rtti。

C 型別轉換操作符 cast operator

dynamic cast 用以轉換多型型別 polymorphic type 建立執行時檢查將保證轉換的有效性。如果該轉換不是安全的,則丟擲乙個bad cast異常。static cast 用以轉換非多型型別。沒有執行時檢查。const cast 用以除去乙個物件的常態 constness 和易失態...

C 過載型別轉換操作符

在需要做資料型別轉換時,一般顯式的寫法是 cpp view plain copy font size 18px type1 i type2 d i type1 d 顯式的寫型別轉,把d從type2型別轉為type1型別 這種寫法不能做到無縫轉換,也就是直接寫 i d,而不需要顯式的寫 type1 來...

細說C 型別轉換操作符

c 語言雖然相容c,也支援c語言的型別轉換用法,就是將型別用圓括號括起來,這種轉換可視性比較差,難以跟蹤錯誤的轉換。c 提供了命名的強制轉換操作符,畢竟轉換有時是不安全的,所以使用命名轉換操作符可以根據所使用的轉換操作符可以判斷風險級別。下面我們就來看看c 提供的四種命名的強制轉換操作符的具體功能和...