C 中4種 型別轉換 方式

2021-08-15 00:11:14 字數 1258 閱讀 8915

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...