c 之類型別轉換

2022-09-08 13:42:16 字數 1018 閱讀 9268

資料型別轉換在程式編譯時或在程式執行實現

基本型別 ←→ 基本型別

基本型別 ←→ 類型別

類型別 ←→ 類型別

類物件的型別轉換可由兩種方式說明:

建構函式  轉換函式

稱為使用者定義的型別轉換或類型別轉換,有隱式呼叫和顯式呼叫方式

1

class

x    

2 ;7

void

f ( x arg ) ;8:

9 x a = x( 1 ) ; //

a = 1,呼叫建構函式x(int),把1轉換成x類型別後賦給物件a,也稱x(1)為類x的型別常量

10 x b = "

jessie

" ; //

b = x ( "jessie" , 0 ),呼叫建構函式x(const char*,int =0),把字串轉換成x類型別後,賦給b;

11 a = 2 ; //

a = x ( 2 ),隱式呼叫建構函式x(int),把2轉換成x類型別之後賦給物件a,

12 f ( 3 ) ; //

f ( x ( 3 ) ),隱式呼叫建構函式x(int),對實參做類型別轉換,然後進行引數結合

13 f ( 10 , 20 ) ; //

error ,找不到匹配的建構函式,轉換失敗

//注:這樣的轉換都是由系統自動完成的

2.類型別轉換函式:

帶引數的建構函式不能把乙個類型別轉換成基本型別

類型別轉換函式是一種特殊的成員函式,提供類物件之間

顯式型別轉換的機制

語法形式:

x :: operator  t ( )

return   t 型別的物件 

功能:將型別 x 的物件轉換為型別 t 的物件

·  函式沒有引數,沒有返回型別,但必須有一條 return 語句,返回 

t 型別的物件

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.發生型別轉換的時機 賦值運算,方法傳參。2.分類 1 根據轉換方法的不同 顯示轉換 explicit 隱式轉換 implicit 如果在 中明確指明了目標型別例稱之為顯示型別轉換如 int x int y,否則稱之為隱式型別轉換如 long y x。顯示和隱式轉換都可能失敗 顯示失敗,則丟擲執行...