程式設計的時候,型別轉換在某些緊要的關頭是必需品。
c風格的型別轉換,相對c++風格的型別轉換來說,比較粗魯,c風格的型別轉換,能允許任何型別之間進行轉換,在編寫c++程式時是也可以使用的,要進行精確的型別轉換時,這是乙個優點。但是,正是這樣的優點,使c風格的型別轉換,在編寫程式時,容易出現型別不明,轉換失誤,並且在程式語句中難以識別,可讀性較差,在編寫c++程式時,建議使用c++中的型別轉換。
c++中的型別轉換操作符有四個,分別是:static_cast,const_cast,dynamic_cast,reinterpret_cast
c的型別轉換使用格式為:(type)expression
c++的型別轉換格式為:static_cast(expression)
static_cast:此操作符的功能上基本與c風格的型別轉換一樣強大,含義也相同,但是功能上有一定的限制:
比如:1.不能吧struct轉換層int,或者,double轉換成指標型別等
2.不能去除const屬性,需要用另乙個型別轉換操作符const_cast
const_cast:用於型別轉換掉表示式const或者volatile屬性,其他型別的轉換操作,在執行語句時,將被拒絕
其最普遍的用途就是轉換掉const屬性
dynamic_cast:被用於安全的沿著類的繼承關係下進行的型別轉換
可以用過返回值判斷其型別轉換是否成功:
1.當對指標型別操作時,返回空指標表示失敗
2.當對應用物件進行型別轉換時,將丟擲異常表示失敗
要注意的點是:
1.該型別轉換無法轉換const修飾的型別
2.不能用於缺乏虛函式的型別上
ps:沒有繼承關係的建議使用static_cast進行轉換,若有const修飾的,建議用const_cast進行轉換
reinterpret_cast:轉換結果幾乎都是執行期定義,因此,使用該型別操作符進行轉換的**將降低可移植性
該型別轉換操作符常用與函式指標型別之間進行轉換
ps:轉換函式指標的**是補課移植的
C 中的型別轉換
和goto語句一樣型別轉換的名聲似乎也是不那麼好。不過型別轉換在某些緊要關頭就顯得尤為重要,看看現有的c c 就知道,以至於你不理解轉換的作用,將是無法閱讀的。就像鈾,它能變成原子彈,但它也能用來發電,是災難還是福祉那就要看人類了。顯然型別轉換默默承受著這不公的一切。不管怎麼說c風格的型別轉換還是不...
C 中的型別轉換
1.隱式轉換 1 賦值轉換 將右值轉換為左型別,然後再賦值。2 整型提公升 c 將bool char,unsigned char,singned char,short轉換為int,int計算最快 表示式中的優先順序轉換 long double double float unsigned long 對...
C 中的型別轉換
我們知道 變數的型別定義了物件能包含的資料和參與的運算。其中一種運算被大多數型別支援,就是將變數從某一種給定的型別轉化為另外的型別。在了解型別轉換種類之前,首先牢記 型別轉換只是暫時的,原來的變數型別並不改變。在c語言中,分為兩種型別轉換 1,隱式型別轉換 2,顯示型別轉換 例如 double d ...