C 中的強制型別轉換

2021-08-20 08:29:45 字數 791 閱讀 9471

1.const_cast<>(expression):用於去除const,volatile和__unaligned屬性。只能作用於指標或者引用。例如:

const int a= 0;

int b = const_cast(a);//不對的

const int *pi = &a;

int * pii = const_castpi;//去除指標中的常量性,也可以新增指標的常量性;

2.static_cast<>(expression):最常用的型別轉換,但是轉換時不會進行型別檢查,向下轉型有時不安全。

class b ;    

class d : public b ;

void function(b* pb, d* pd)

3.dynamic_cast<>(expression):該操作符用於執行時檢查該轉換是否型別安全,但只在多型型別時合法,即該類至少具有乙個虛擬方法。dynamic_cast與static_cast具有相同的基本語法,dynamic_cast主要用於類層次間的上行轉換和下行轉換,還可以用於類之間的交叉轉換。

class c

; class t

int main()

此時如改為以下則是合法的:

class c

;// c現在是 多型

}

4.reinterpret_cast<>(expression):類似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...