C 定義隱式轉換函式

2021-05-26 14:45:15 字數 608 閱讀 1504

c++中單引數建構函式若不宣告為explict,在合適的場合可以產生隱式轉換:由成員變數型別轉換為類型別。

下面的**展示如何實現反向的轉換

void changefontsize(fonthandle f, int newsize);

2 class font

8 private:

9 fonthandle f;

10 };

11 12 font f;

13 int newsize;

14 changefontsize(f, newsize); //將font隱式轉換成fonthandle

另外,兩個或更多引數的non-explicit建構函式,如果所有形參都提供了預設實參,那麼在需要乙個類型別物件的表示式位置,提供乙個first形參型別的物件,編譯器也執行隱式轉換,轉換得到乙個類物件。

如,建構函式rational(int num1 = 0,  int num2 = 1); rational類中過載了operator*。表示式result = onehalf * 2; 2發生隱式轉換為rational物件。result 和 onehalf為rational物件。 

C 語法之 隱式轉換函式,隱式轉換 函

structaprivate double d a a 5 會呼叫建構函式執行隱式轉換,用5初始化a,這種有時候會有風險 structa 只能顯示初始化 a a 5 private double d a a 5 用5初始化a,編譯器報錯。structa 只能顯示初始化 a a 5 可以隱式轉換為do...

scala 隱式轉換函式 隱式轉換引數

目前的scala相關部落格大概只能算乙個筆記,方便自己記錄,也幫大家查詢資訊了。首先scala中的隱式轉換可以分為隱式函式轉換與隱式引數轉換兩類,下面就來分別說一下自己對這兩種模式的理解。1 隱式函式轉換,我們先看一段 scala val x int 3.14 10 error type misma...

C 轉換建構函式和隱式轉換函式

其實我們已經在c c 中見到過多次標準型別資料間的轉換方式了,這種形式用於在程式中將一種指定的資料轉換成另一指定的型別,也即是強制轉換,比如 int a int 1.23 其作用是將1.23轉換為整形1。然而對於使用者自定義的類型別,編譯 系統並不知道如何進行轉換,所以需要定義專門的函式來告訴編譯系...