天天看點

《C++語言基礎》參考——轉換構造函數與類型轉換函數

下面的程式,想在main函數中要完成實數加複數、複數加實數,不可以。編譯下面的程式出現錯誤,就是因為沒有提供對應類型資料的運算符重載函數。

解決方案2:設計轉換構造函數。将2.5之類的實數,轉換為實部為2.5的複數(符合數學中的定義),然後進行運算。

類定義為:

當main函數不改變時,錯誤仍然在。這說明,系統不會自動在2.5+c1時,自動将2.5轉換為複數類的對象。

當将main函數改為如下形式時,運算順利進展:

complex(2.5)?這不就是強制類型轉換嗎?int(2.5)還記得否,強制将2.5轉換為int型!

解決方案3:設計類型轉換函數。類的定義如下:

若用原main函數測試,仍然有錯。請思考為什麼?也可以在看完下文後再思考。

main函數如下改:

程式編譯沒有問題。operator double( ) 類型轉換函數的定義,其實支援了complex類型向double的自動類型轉換。

隻是遺憾的是,複數中的虛部,在轉換中被丢掉了。

從這篇文章中,我們可以看出轉換構造函數與類型轉換函數的用法,以及應用的場合。

繼續閱讀