C 的四種型別轉換詳細介紹和使用

2021-10-16 09:12:38 字數 2233 閱讀 4091

舊式轉型c風格的強制型別:

type b = (type) a

例如:

int i = 48;

char c = (char) i;

式轉型c++風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。

格式:type b =型別操作符( a )

型別操作符= static_cast | reinterpreter_cast | dynamic_cast | const_cast

靜態型別轉換(斯文的勸導,溫柔的轉換)。如int轉換成char

主要用法:

#include using namespace std;

class people ;

class girl :public people

};class boy :public people

};int main(void)

重新解釋型別(掛羊頭,賣狗肉) 不同型別間的互轉,數值與指標間的互轉

用法:type b = reinterpret_cast ( a )

type必須是乙個指標、引用、算術型別、函式指標.

忠告:濫用 reinterpret_cast 運算子可能很容易帶來風險。 除非所需轉換本身是低階別的,否則應使用其他強制轉換運算子之一。

#include using namespace std;

class people ;

class girl :public people

};class boy :public people

};int main(void)

動態型別轉換

注意:dynamic_cast在將父類cast到子類時,父類必須要有虛函式一起玩。
#include using namespace std;

class people ;

class girl :public people

void paly() };

class boy :public people

void paly() };

void people_play(people& people_a)

catch (std::bad_cast bc)

try

catch (std::bad_cast bc)

}void people_play(people* people_a)

else

boy* boy_a = dynamic_cast(people_a);

if (boy_a)

else }

int main(void)

去const屬性。(僅針對於指標)

#include using namespace std;

void demo(const int p)

void demo_1(const char* p)

void demo_2(const char* p)

int main(void)

議:

c語言中  能隱式型別轉換的,在c++中可用 static_cast<>()進行型別轉換。因c++編譯器在編譯檢查一般都能通過;c語言中不能隱式型別轉換的,在c++中可以用 reinterpret_cast<>() 進行強制型別解釋

總  結:

最後的忠告:程式設計師必須清楚的知道: 要轉的變數,型別轉換前是什麼型別,型別轉換後是什麼型別,轉換後有什麼後果。

c++大牛建議一般情況下,不建議進行型別轉換;避免進行型別轉換。

C 四種型別轉換介紹

本文的內容結合作者 和作者 兩篇文章而來的 1.隱式型別轉換 而對於隱式變換,就是標準的轉換,在很多時候,不經意間就發生了,比如int型別和float型別相加時,int型別就會被隱式的轉換位float型別,然後再進行相加運算。2.顯式型別轉換。關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c...

c 四種型別轉換

c風格的強制型別轉換 type cast 很簡單,不管什麼型別的轉換統統是 type b type a。c 風格的型別轉換提供了4種型別轉換操作符來應對不同場合的應用。const cast,字面上理解就是去const屬性。static cast,命名上理解是靜態型別轉換。如int轉換成char。dy...

C 四種型別轉換

include include includeusing namespace std static cast 用法 static cast type id expression 該運算子把expression轉換為type id型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法 用於...