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。然而對於使用者自定義的類型別,編譯 系統並不知道如何進行轉換,所以需要定義專門的函式來告訴編譯系...