類的自動型別轉換和強制型別轉換

2021-06-21 16:22:07 字數 1174 閱讀 5008

1.可以將類定義成與基本型別或者另乙個類相關,使得從乙個類轉換成另外乙個型別是有意義的。

2.將基本型別轉換成類(下面以double轉換成money類來舉例):

假設定義了如下類:

class money

;

則其中的建構函式
money(double r);
可以講double型別轉換成money類這個型別。

●只有接受乙個引數的建構函式才能作為轉換函式

●或者有多個引數,但是除第乙個引數沒有預設值外,其他所有的引數都有預設值,這樣的建構函式也可作為轉換函式

●在正常情況下,以下**是有效的:

money m;

m = 12.3;

這種轉換成為隱式轉換。

●隱式轉換有時候會導致意外的型別轉換,所以我們有時需要關閉隱式轉換,這時我們使用關鍵字explicit:

explicit money(double r);
使用了關鍵字explicit後,則**:

money m;

m = 12.3;

是無效的,只能使用如下方式將double型別轉換成money類:

money m(12.3);//或者類似初始化方式

3.類轉換為其他型別:

●建構函式只能用於從某種型別到類型別的轉換。要進行相反的轉換,必須使用特殊的c++運算子函式---轉換函式

●注意一下幾點:

①轉換函式必須是類的方法

②轉換函式不能指定返回型別

③轉換函式不能有引數

●轉換函式舉例:

假設有如下類定義:

class money

;

其中的

operator double();  //轉換函式,用於將money類轉換成double型別
就是我們定義的轉換函式,定義方法是operator typename()

轉換函式的使用:

int main()

這樣就可以將類轉換成double。上例中也可以在result前加上(int)轉換成整數型別。

類的自動轉換和強制型別轉換

內建型別轉換 將乙個標準型別變數的值賦給另乙個標準型別的變數時,如果這兩種型別相容,則c 自動將這個值轉變為接收變數的型別。eg long cout 8 int型的8將被轉換為long double time 11 int型的11將被轉換為double int side 3.33 double型別的...

c 類的自動型別轉換和強制型別轉換

下面討論類的型別轉換。我們先來看看c 是如何處理內建型別轉換的。將乙個標準型別變數的值賦給另一種標準型別的變數時,如果這兩種型別相容,則c 自動將這個值轉換為接受變數的型別。double time 11 int value 11 converted to type double利用建構函式將內建型別...

C 中的自動型別轉換和強制型別轉換

前面已經認識了不同的資料型別,你們有沒有嘗試過讓不同的資料型別進行運算呢?inmwywfswfnft a 1 double b a console.writeline b 執行結果是 1 我們把乙個整型的變數賦值給了乙個浮點型的變數,可以正常的輸出,如果我們把乙個浮點型的變數賦值給乙個整型的變數呢?...