C 隱式型別轉換

2021-06-28 05:30:42 字數 580 閱讀 5962

c++定義了一組內建型別物件之間的轉換標準,在必要時它們被編譯器隱式的應用到物件上。

發生隱式型別轉換的情景:

1,在混合型別的算術表示式中

轉換原則:轉換為最寬的資料型別。也可叫,算術轉換。

int  ival = 5;

double dval = 3.14;

//ival 被提公升為double型別

ival + dval ;

算術轉換保證了二元操作的兩個運算元被提公升為同樣的型別,然後再用它表示結果型別。在進行算術轉換時有兩個通用的指導原則:

(1)為了防止精度損失,如果有必要的話,型別總是被提公升為較寬的型別。

(2)所有含有小於整型的算術表示式,在計算前都會把小於整型的型別轉換為整型。也叫整數提公升。

2,用一種型別的表示式賦值給另一種型別的物件

轉換原則:以被賦值物件的型別為準。

3,把乙個表示式傳遞給乙個函式,呼叫表示式的型別與形式引數的型別不相同

轉換原則:以函式的形參為準。

4,從乙個函式返回乙個表示式的型別與返回型別不相同

轉換原則:以返回型別為準

C 隱式型別轉換

眾所周知,c 的基本型別中並非完全的對立,部分資料型別之間是可以進行隱式轉換的。所謂隱式轉換,是指不需要使用者干預,編譯器私下進行的型別轉換行為。很多時候使用者可能都不知道進行了哪些轉換。c 物件導向的多型特性,就是通過父類的型別實現對子類的封裝。通過隱式轉換,你可以直接將乙個子類的物件使用父類的型...

C 隱式型別轉換

c primer 中提到 可以用 單個形參來呼叫 的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換。這裡應該注意的是,可以用單個形參進行呼叫 並不是指建構函式只能有乙個形參,而是它可以有多個形參,但那些形參都是有預設實參的。那麼,什麼是 隱式轉換 呢?上面這句話也說了,是從 建構函式形參型...

C 隱式型別轉換

可以用單個形參來呼叫的建構函式定義了從 形參型別 到 該類型別 的乙個隱式轉換。這裡應該注意的是,可以用單個形參進行呼叫 並不是指建構函式只能有乙個形參,而是它可以有多個形參,但那些形參都是有預設實參的。可以用單個形參來呼叫的建構函式有2種呼叫方式 隱式呼叫和顯示呼叫 以如下類為例 class a ...