c 的強制型別轉換

2021-07-12 02:20:56 字數 1075 閱讀 6830

在c和c++中,強制型別轉換時常出現,例如:

void test ()

所以,強制型別轉化時常存在,故而c++風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。它們分別是const_caststatic_castdynamic_castreinterpreter_cast

reinterpret_cast操作符用於將一種型別轉換為另一種不同的型別。例如

typedef void (* func)();

int dosomething (int i)

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

void test ()

};class b : public a

{};void fun (a* pa)

{   

b* pb1 = static_cast(pa);

b* pb2 = dynamic_cast(pa);

cout<<"pb1:" <

static_cast類似於c風格的強制轉換。無條件轉換,靜態型別轉換。用於:

1. 基類和子類之間轉換:其中子類指標轉換成父類指標是安全的;但父類指標轉換成子類指標是不安全的。(基類和子類之間的動態型別轉換建議用dynamic_cast)

2. 基本資料型別轉換。enum, struct, int, char, float等。static_cast不能進行無關型別(如非基類和子類)指標之間的轉換。

3. 把空指標轉換成目標型別的空指標。

4. 把任何型別的表示式轉換成void型別。

5.static_cast不能去掉型別的const、volitale屬性(用const_cast)。

以上便是對四種函式的**,如有不足,請多多指教

C 強制型別轉換

四種型別可能很多人都常常忽略就象我一樣,但是有時還是比較有用的。不了解的建議看看,一些機制我也不是十分了解,只是將一些用法寫出來讓大家看看。強制轉化無論從語法還是語意上看,都是c 中最難看的特徵之一。但是基於c風格的轉化的語義的不明確性及其一些潛在問題。強制型別轉化最終還是被c 接受了。1.stat...

C 強制型別轉換

標準c 中主要有四種強制轉換型別運算子 const cast,reinterpret cast,static cast,dynamic cast等等。1 static cast a 將位址a轉換成型別t,t和a必須是指標 引用 算術型別或列舉型別。表示式static cast a a的值轉換為模板中...

C 強制型別轉換

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