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

2021-10-14 01:12:30 字數 922 閱讀 8348

內建型別轉換:將乙個標準型別變數的值賦給另乙個標準型別的變數時,如果這兩種型別相容,則c++自動將這個值轉變為接收變數的型別。

eg:long cout=8; //int型的8將被轉換為long

double time =11; // int型的11將被轉換為double

int side=3.33 //double型別的3.33將被轉換為int的3

上述賦值語句都是可行的,因為在c++看來,各種數值型別都表示相同的東西——乙個數字。

#include#includeusing namespace std;

class tempdata

;tempdata::tempdata()

tempdata::tempdata(int initdata1)

tempdata::tempdata(string initdata2)

tempdata::tempdata(bool initdata3)

int main()

對於如上**,當乙個類的建構函式中有僅有乙個引數的建構函式,那麼這個類可將對應的引數型別的值轉換為該類。這種轉換為隱式轉換,對於包含多個引數的建構函式,則只有當其他引數提供預設值,僅有乙個引數未提供預設值的情況下才支援這種轉換。

上述程式提供了將數字,字串,布林型資料轉換為tempdata型別的資料,那麼是否可以做相反的轉換,比如將tempdata轉換為double型別的。此時就需要使用到特殊的c++運算子函式——轉換函式。

轉換函式的形式:

operator typename();

同時注意以下幾點:

比如乙個int型的轉換函式原型如下:

operator int();

*int型轉換小數時將待轉換的值四捨五入為最接近的整數

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

1.可以將類定義成與基本型別或者另乙個類相關,使得從乙個類轉換成另外乙個型別是有意義的。2.將基本型別轉換成類 下面以double轉換成money類來舉例 假設定義了如下類 class money 則其中的建構函式money double r 可以講double型別轉換成money類這個型別。只有接...

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

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

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

int a 12 a 22.5 a int num int 99.5 int num2 int 99.5 兩種寫法都正確將浮點型變數賦值給整型變數時,捨棄小數部分 將整型資料賦值給浮點型變數時,數值不變,但是以指數形式儲存 將double型資料賦值給float型變數時,注意數值範圍溢位 字元型資料可...