舊式轉型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型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法 用於...