在c++中延用c風格的型別轉換,即(type)(expression) ,依然合法,但是c++風格的型別在準確性上的可讀性要更高
1. static_castexpression
和一般c風格轉換無異,但不能從表示式中去掉const屬性
2.const_castexpression
用於去掉表示式中的const屬性(包括volatileness屬性)
例:
const int a =5;
//int & b = a; //錯誤
int & b = const_cast(a); //正確
3. dynamic_cast(expression)
被用於安全地沿著類的繼承關係向下進行型別轉換。這就是說,你能用dynamic_cast把指向基類的指標或引用轉換成指向其派生類或其兄弟類的指標或引用,而且你能知道轉換是否成功。失敗的轉換將返回空指標(當對指標進行型別轉換時)或者丟擲異常(當對引用進行型別轉換時)
ps:基類必須含用虛函式/純虛函式
例
class base ;
};class derived : public base;
int main()
4.reinterpret_cast(expression)
最普通的用途就是在函式指標型別之間進行轉換, 轉換函式指標的**是不可移植的(c++不保證所有的函式指標都被用一樣的方法表示)
--參見《more effective 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型別,但沒有執行時型別檢查來保證轉換的安全性。它主要有如下幾種用法 用於...
C 四種型別轉換
1 static cast 1.上行轉換,把派生類的指標或引用轉換成基類,此時是安全的 2.下行轉換,把基類的指標或者引用轉換成派生類,因為沒有動態監測,所以是不安全的 3.顯示型別轉換,如int轉float等 4.任意型別空指標轉任意型別空指標 5.任意型別表示式轉為void型別 如下 int a...