C 之型別轉換

2021-09-30 07:32:31 字數 529 閱讀 6379

1.發生型別轉換的時機:賦值運算,方法傳參。

2.分類:

(1)根據轉換方法的不同:顯示轉換(explicit),隱式轉換(implicit)。

如果在**中明確指明了目標型別例稱之為顯示型別轉換如:int x = (int) y,否則稱之為隱式型別轉換如:long y = x。

顯示和隱式轉換都可能失敗:顯示失敗,則丟擲執行時異常。隱式失敗,則丟擲編譯異常。

最後,隱式轉換也可以用顯式轉換替代,但顯式轉換不能用隱式轉換替代。

(2)根據源型別和目標型別的不同:變換(conversion),投射(cast),裝箱(boxing)/拆箱(unboxing)。

裝箱/拆箱:如果轉換的型別乙個為引用型別,乙個為值型別,則稱之為裝箱/拆箱。從值型別向引用型別的轉換稱為裝箱,而從引用型別向值型別轉換稱為拆箱。

投射:如果源型別和目標型別是直接或間接的繼承關係,則稱之為投射。

變換:如果源型別和目標型別不具備上述兩種關係,如兩種簡單值型別或兄弟/鄰居型別(有著共同的祖先類)之間,則稱為普通型別轉換(或稱「變換」)。 

C 之型別轉換

一 static cast型別轉換 static cast 應用於c 可以隱式轉換的型別之間,包括雙向隱式轉換和單向隱式轉換。例如 雙向隱式轉換 int a char b a static cast b 可以直接通過隱式轉換,轉換型別 a b b static cast a 可以直接通過隱式轉換,轉...

C 之型別轉換

實現將a類的物件轉換為b類物件的方法有3種 a類物件 方法一 如果a為基類,b為派生類,能夠將派生類的物件轉換基類的物件,如b b a a b 方法二 在a類物件中定義轉換建構函式 單形參建構函式 除掉預設形參 並將b類物件作為形參,同一時候禁止使用explicit關鍵子,形如 a b b,int ...

c 之類型別轉換

資料型別轉換在程式編譯時或在程式執行實現 基本型別 基本型別 基本型別 類型別 類型別 類型別 類物件的型別轉換可由兩種方式說明 建構函式 轉換函式 稱為使用者定義的型別轉換或類型別轉換,有隱式呼叫和顯式呼叫方式 1 class x 2 7 void f x arg 8 9 x a x 1 a 1,...