dynamic_cast(var)
reinterpret_cast(var)
static_cast(var)
const_cast(var)
(1)執行時,檢查轉換;
(2)基類中一定要有虛函式(不能用於基礎型別),否則編譯不通過;
(3)成功的話返回的是指向類的指標或引用,轉換失敗的話則會返回null; (更多請檢視,引文《c++中四種型別轉換方式》)
(1) reinterpret的意思是重新解釋,此識別符號的意思即為資料的二進位制形式重新解釋,但是不改變其值。
(2)
有著和c風格的強制轉換同樣的能力。它可以轉化任何內建的資料型別為其他任何的資料型別,也可以轉化任何指標型別為其他的型別。
(3) 它甚至可以轉化內建的資料型別為指標,無須考慮型別安全或者常量的情形。不到萬不得已絕對不用。
(1)可以實現c++中內建基本資料型別之間的相互轉換,enum、struct、 int、char、float等;(2)它不能進行無關型別(如非基類和子類)指標之間的轉換;
(3)如果涉及到類的話,static_cast只能在有
相互聯絡的型別
中進行相互轉換,
不一定包含虛函式
。
(1)去掉const屬性:const_case(&num),常用,因為不能把乙個const變數直接賦給乙個非const變數,必須要轉換。(2)加上const屬性:const int* k = const_case(j),一般很少用,因為可以把乙個非const變數直接賦給乙個const變數,比如:const int* k = j;
另外:
double x = 10.3;
int y;
y = int (x); // functional style cast(建構函式zhuan'h)
y = (int) x; // c-style cast (c風格強轉)
(1) 盡可能不使用c風格的型別強轉
(2) 可以使用建構函式(函式式轉換)代替
參考:[1] c++四種型別轉換機制
[2] c++中四種型別轉換方式
C 中4種型別轉換方式
首先型別轉換,比如以下 int i double d 12.0 i int d 但是這種強制轉換符對於類和類的指標來說,就比較麻煩,所以c 標準定義了四個新的轉換符 轉換乙個指標為其他型別的指標,也允許乙個指標轉換為整數型別,反之亦然 include using namespace std clas...
C 的4種型別轉換方式
型別轉換有c風格的,當然還有c 風格的。c風格的轉換的格式很簡單 type expression,但是c風格的型別轉換有不少的缺點,有的時候用c風格的轉換是不合適的,因為它可以在任意型別之間轉換,比如你可以把乙個指向const物件的指標轉換成指向非const物件的指標,把乙個指向基類物件的指標轉換成...
比較C 中的4種型別轉換方式
ansi c 標準定義了四個新的轉換符 reinterpret cast static cast dynamic cast 和 const cast 目的在於控制類 class 之間的型別轉換。reinterpret cast expression dynamic cast expression s...