c 中的強制型別轉換

2021-09-16 14:31:44 字數 973 閱讀 4479

在c語言中,用於強制型別轉換的方式,採用type a = (type)b。沒有型別檢查,非常不安全。在c++中有四種型別轉換方式 reinterpret_cast, static_cast, dynamic_cast,const_cast.四種型別轉換方式。

1. reinterpret_cast

與c語言中的強制累心給轉換相似,可以用於沒有任何關係的型別轉換,非常不安全,不建議使用。

char a = 'a';

​​​​​​​int b = reinterpret_casta;

2. static_cast

可以用於基本型別的資料轉換,帶有父子繼承關係類的轉換。可以子類轉父類,也可以父類轉子類

//轉換基本型別

char a = 'a';

​​​​​​​int b = static_casta;

// 轉換父子繼承類

// 父類轉子類

animal *a;

cat *b = static_castb;

// 子類轉父類

cat *a;

animal *b = static_castb;

3. dynamic_cast

主要用於子類轉父類,不可以父類轉子類

// 子類轉父類

cat *a;

animal *b = static_castb;

4. const_cast

主要用於去除const和加上const特性,可以用於轉換基本資料型別和類指標

int a = 10;

contst int &b = a;

//報錯,b不可以被修改

b= 20;

int c = const_castb;

c = 20;

//a,b,c 都被修改為20

​​​​​​​

C 中型別強制轉換

c 中有4種強制轉換 const cast,static cast,dynamic cast,reinterpret cast,以下將分別介紹 1.const cast 形式const cast expression 用來修改型別的const或volatile屬性,除了const或volatile修...

C 中的強制型別轉換

關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast dynamic cast reint...

C 中的型別強制轉換

c 同時提供了四種新的強制轉型形式 通常稱為新風格的或 c 風格的強制轉型 const cast expression dynamic cast expression reinterpret cast expression static cast expression 每一種適用於特定的目的 dyn...