C 類型別隱式轉換

2021-06-29 02:28:08 字數 971 閱讀 8214

隱式類型別轉換:「可以用單個實參來呼叫的建構函式定義了從形參型別到該型別的乙個隱式轉換。」(c++ primer)首先要單個實參,你可以把建構函式colour的預設實參去掉,也就是定義乙個物件必須要兩個引數的時候,檔案編譯不能通過。

(以上只是將內建型別轉換為自定義型別)

過載double,int 將使用者自定義資料型別轉換為內建型別

當建構函式只有乙個引數,而且該引數又不是本類的const和引用時,這種函式叫做轉換建構函式

#includeusing namespace std;

class complex

complex(double r, double i) :real(r), imag(i)

//當建構函式只有乙個引數,而且該引數又不是本類的const和引用時,這種函式叫做轉換建構函式

complex(double r) :real(r), imag(0)

void print()

complex &operator+(complex c)

private:

double real;

double imag;

};int main()

過載double int,實現類型別轉換

#includeclass fushu

void print()//輸出

operator int();

//不支援友元,僅僅支援成員函式

operator double()

private:

int x;

int y;

};fushu::operator int() //類類之間的轉換函式

void main()

如要要阻止隱式型別轉換的話,c++提供了一種抑制建構函式隱式轉換的辦法,就是在建構函式前面加explicit關鍵字

C 隱式類型別轉換

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

C 隱式類型別轉換

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

C 隱式類型別轉換

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