C C 中的型別轉換

2021-10-08 22:47:13 字數 1019 閱讀 2804

標準c++為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符:static_cast、reinterpret_cast、const_cast、dynamic_cast

static_cast用於非多型型別的轉換(靜態轉換),編譯器隱式執行的任何型別轉換都可用static_cast,但它不能用於兩個不相關的型別進行轉換

int a =10;

double b =

static_cast

<

double

>

(a);

// 相關型別、相近型別(意義類似的型別)之間的轉換

reinterpret_cast操作符通常為運算元的位模式提供較低層次的重新解釋,用於將一種型別轉換為另一種不同的型別(不相關型別之間的轉換)

int c =10;

int* pc =

&c;int path =

reinterpret_cast

<

int>

(pc)

;// 不相關型別之間的轉換

const_cast最常用的用途就是刪除變數的const屬性,方便賦值

const

int d =2;

int* pd =

const_cast

<

int*

>

(&d)

;// 去掉const屬性的轉換

*pd =

3;

dynamic_cast用於將乙個父類物件的指標/引用轉換為子類物件的指標或引用(動態轉換)

向上轉型:子類物件指標/引用->父類指標/引用(不需要轉換,賦值相容規則) 向下轉型:父類物件指標/引用->子類指標/引用(用dynamic_cast轉型是安全的)

classa}

;classb:

public a

;int

main()

C C 中的型別轉換

從c轉向c 時,型別轉換出現了一些疑惑,查閱了一些資料和博文,整理如下。1.隱式型別轉換 這類轉換主要發生在型別不同的賦值和計算過程中,c c 中均存在 int ival 3 double dval 3.124 ival dval ival被提公升為double型別int p 0 0被轉換為了int...

C C 的型別轉換

c語言的型別轉換分為隱式型別的轉換和強制型別的轉換。隱式型別轉換 適用於相近型別的轉換 int main return 0 int main 因為c語言的隱式型別轉換坑很大,標準c 為了加強型別轉換的可視性,引入了四種命名的強制型別轉換操作符 static cast 相近型別的轉換 static c...

C C 型別轉換

include include using namespace std int main 程式的執行結果如下 註解 int a 相當於將浮點數a的位址的前sizeof int 個位元組當成int型的資料輸出。float a 1.0f在記憶體中的表示是0x3f800000,當 int a強制轉換時,會...