c++中的型別轉換包括隱式型別轉換和顯式型別轉換。隱式型別轉換例如在int與float相加時已經發生,顯示型別轉換主要包括以下四種:
1. static_cast:
主要用於非多型之間的型別檢查。不提供執行時的型別檢查來確保轉換的安全性,因此效率較高。常應用於以下場景:
* 類層次結構中,父類與子類的指標和引用之間的轉換,子類轉父類時是安全的,父類轉子類時是不安全的,需要程式設計師自己來保證安全性。
* 基本資料型別之間的轉換,這種轉換的安全性需要程式設計師自己來保證。
* void指標轉換為其他型別指標,及其不安全。
注:static_cast不能轉換掉expression的const、volatile和__unaligned屬性。
2. dynamic_cast:轉換型別必須是指標或者引用,src和target需要同為指標或者引用。既可以用於類層次結構中的轉換,也可以用於類之間的轉換。
* 類層次結構中,子類轉父類與static_cast基本一致,父類轉子類提供了執行時檢查,因此是安全的。
* 轉換成(void*),src必須包含虛函式。
* 如果src是基類指標,則轉換過程中會判斷真的指向target型別物件,否則返回null,如果src是基類引用,則會拋異常。
3. reinterpret_cast:處理無關型別之間的轉換。它會產生乙個新的值,新的值與src之間擁有完全一樣的位元位。但是不能去除變數的const等屬性。
4. const_cast:const_cast可以將const, volatile和__unaligned移除。
注:你不能直接對非指標和非引用的變數使用const_cast操作符去直接移除它的const、volatile和__unaligned屬性。
volatile是為了防止多工情況下,變數的取值不是從記憶體中取而是從暫存器cache裡面取的。
各種型別轉換 C
1.int轉string char buffer 50 int count value total asint sprintf s buffer,d count std string out buffer 2.string轉int std string str 123 int n atoi str....
c 中的各種型別轉換
const cast 去掉const屬性 const int base 1 int b base 編譯錯誤 int b const cast base dynamic cast 只能用於指標和引用的轉換,可以將父類指標轉換成對應的子類指標,但是在向下轉換的時候父類一定要有虛函式,否則會編譯錯誤,如果...
各種型別的轉換
int i 100 long l 2001 float f 300.2 double d 12345.119 char username csdn char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 二 字串...