首頁  >  文章  >  後端開發  >  C++11常用語法- explicit型別轉換運算子的具體用法

C++11常用語法- explicit型別轉換運算子的具體用法

php是最好的语言
php是最好的语言原創
2018-07-26 13:54:492322瀏覽

為了想explicit型轉換運算子和C Primer書中不同的地方,且提供更有意義的例子,作者花了不少心思,請大家務必認真理解。

型別轉換運算子

看下面的範例:

C++11常用語法- explicit型別轉換運算子的具體用法

 這時一個複數類別的雛形,定義了一個double類型的型別轉換運算子。有了它以後,可以像下面這樣使用:

C++11常用語法- explicit型別轉換運算子的具體用法

輸出結果如下:

C++11常用語法- explicit型別轉換運算子的具體用法

## complex不支援輸出運算符,所以編譯器努力將c1轉換成double類型以後輸出。到目前為止都挺好。

 

真的是想轉換成double?

 再看下面的程式碼:

C++11常用語法- explicit型別轉換運算子的具體用法

如果從數學的角度來講,應該輸出2.23606。但實際上,這段程式碼連編譯都通不過。原因是對於這段程式碼編譯器有兩種選擇:一個是將c1轉換稱double然後加1;另一個是將1轉換為複數(1 0i)以後執行複數加法。

需要程式設計師給個想法。

明確的型別轉換運算子

為了消除二義性,一個辦法就是用explicit禁止隱式的double型別轉換。程式碼如下:

C++11常用語法- explicit型別轉換運算子的具體用法

由於無法進行隱含型別轉換,所以下面的程式碼會出現編譯錯誤:

 C++11常用語法- explicit型別轉換運算子的具體用法

這並不是什麼大問題,因為轉換為double輸出這件事本身對不對都不好講。程式碼中已經透過輸出運算子重載提供了複數形式的輸出功能。

輸出如下:

C++11常用語法- explicit型別轉換運算子的具體用法

這才是我們真正想要的!

補充一點

如果願意的話,也可以這樣編碼:

C++11常用語法- explicit型別轉換運算子的具體用法##覺得這篇文章有幫助?請分享給更多人。

相關推薦:

HTML 運算子、類型轉換

C# 自訂implicit和explicit轉換

#C 語言教學

#

以上是C++11常用語法- explicit型別轉換運算子的具體用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn