隱式型別轉換

2021-04-23 10:54:21 字數 469 閱讀 6687

c++本身對內建型別定義了各種隱式的型別轉換,這種內建的型別轉換在可能導致精度

丟失的情況下編譯器會發出警告,但當我們定義自己的型別時,提供各種隱式轉換往往

是弊大於利的(至少在我編寫過的**中很少用到).

隱式的型別轉換可分為:其它型別到本型別,本型別到其它型別兩種.第一種通過單變數

可呼叫之建構函式進行實現,第一種則通過使用者定義之隱式轉換函式進行實現.也許在

某些特殊的情況下這種隱式轉換是有用的(例如可能的數值型別),但在大多數情況下它

們所帶來的便利並不能彌補可能帶來的漫長的程式行為錯誤除錯,錯誤的關閉在於它們的

存在導致程式進行了使用者認為不應該出現的行為但編譯器卻不提供任何錯誤提示.

一般用於防止這種隱式轉換的方法是把建構函式標誌為explcit,或者以**類的方式

避免進行一次以上的隱式型別轉換.

參考資料:more effective c++ (2rd) 第5條

隱式型別轉換

c語言中有以下四種情況會進行隱式轉換 1 算術運算子中,低型別轉換為高型別。2 賦值表示式中,右邊表示式的值自動隱式轉換為左邊變數的型別,並賦值。3 函式呼叫傳遞引數時,系統將實參轉換為形參的型別後,賦給形參。4 函式有返回值是,系統將表達值型別轉換為返回值型別。進行算術運算時,不同型別的數必須轉換...

隱式型別轉換

1.c的整型算數運算總是至少以預設型型別的精度來進行的。為了獲得這個精度,表示式的字元和短整型運算元在使用之前被轉換為普通整型,這種轉換叫 整型提公升 下面我們來看個例子 char a 2 char b 127 char c a b 求c 多少?首先char為1個位元組 而且是有符號的 char最大...

隱式型別轉換

double float 高 long unsigned int char,short 低 1.如乙個int 型資料與乙個unsigned型資料一起運算,需要先將int型資料轉換為unsigned型,然後兩者再進行運算,結果為unsigned型。所有這些轉換都是由系統自動轉換 2.乙個大於0x80的...