1.const_cast<>(expression):用於去除const,volatile和__unaligned屬性。只能作用於指標或者引用。例如:
2.static_cast<>(expression):最常用的型別轉換,但是轉換時不會進行型別檢查,向下轉型有時不安全。const int a= 0;
int b = const_cast(a);//不對的
const int *pi = &a;
int * pii = const_castpi;//去除指標中的常量性,也可以新增指標的常量性;
3.dynamic_cast<>(expression):該操作符用於執行時檢查該轉換是否型別安全,但只在多型型別時合法,即該類至少具有乙個虛擬方法。dynamic_cast與static_cast具有相同的基本語法,dynamic_cast主要用於類層次間的上行轉換和下行轉換,還可以用於類之間的交叉轉換。class b ;
class d : public b ;
void function(b* pb, d* pd)
4.reinterpret_cast<>(expression):類似c中的直接用括號進行強制型別轉換,沒有限制,但謹慎使用。class c
; class t
int main()
此時如改為以下則是合法的:
class c
;// c現在是 多型
}
C 中型別強制轉換
c 中有4種強制轉換 const cast,static cast,dynamic cast,reinterpret cast,以下將分別介紹 1.const cast 形式const cast expression 用來修改型別的const或volatile屬性,除了const或volatile修...
C 中的強制型別轉換
關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast dynamic cast reint...
C 中的型別強制轉換
c 同時提供了四種新的強制轉型形式 通常稱為新風格的或 c 風格的強制轉型 const cast expression dynamic cast expression reinterpret cast expression static cast expression 每一種適用於特定的目的 dyn...