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 我們把乙個整型的變數賦值給了乙個浮點型的變數,可以正常的輸出,如果我們把乙個浮點型的變數賦值給乙個整型的變數呢?...