c 四種型別轉換

2021-10-14 17:15:11 字數 1840 閱讀 3222

c++有四種型別轉換的方式

用於去掉const,volatile和_unaligned屬性

說到了const 在這裡提一下

const

簡單理解:const的目的就是定義乙個「不會被修改的常量」,可以修飾變數,指標,引用,函式引數等等

使用const可以減少**出錯的概率,

int

main()

;const t a;

= 100;

t& b =

const_cast

>

(a);

b.i =

100;

cout << a.i << endl;

return0;

}

我們把上述**放入編譯器內 會發現 **a.i=100;**這句報錯

因為const關鍵字的緣故

但是通過const_cast關鍵字就可以使其賦值

然後我們看下結果

static_cast類似於c語言中的強制轉換 進行無條件轉換,靜態型別轉換

1.基類和子類之間的轉換,子類指標轉換為父類指標是安全的,但是父類指標轉換為子類指標是不安全的

2.static_cast可以轉換基本資料型別如:int char float enum struct 不能轉換無關型別比如非基類和子類的轉換

3.把任何型別的表示式轉換成void型別

4.static_cast 不能去掉型別的const volatile型別(用const_cast)

static_cast不提供執行時檢查 所以在編寫的時候要確認安全性

int

main()

相比static_cast來說,dynamic_cast在轉換之前會檢測型別轉換是否合法,具有一定安全性 同時額外消耗一些效能有條件的轉換,動態型別的轉換,執行的時候檢查型別安全**換失敗返回null)

1.安全的基類和子類之間的轉換

2.必須帶有虛函式

3.相同基類,不同子類之間的交叉轉換,但是結果必須返回null

class

base

;//虛函式時必須的 保證多型特性才能使用};

class

sub:

public base ;}

;int

main()

注意上邊定義了乙個虛函式,只有存在虛函式才能保證多型性僅僅重新解釋型別,但沒有進行二進位制的轉換

1.轉換的型別必須是乙個指標,引用,算術型別,函式指標或者是成員指標

2.在比特級上的轉換,可以把乙個指標轉換成乙個正數,也可以把乙個整數轉換成乙個指標

3.最普通的用途就是函式指標型別之間進行轉換

4.很難保證移植性

他可以轉換任何內建的資料型別為其他任何的資料型別

也可以轉化任何指標型別為其他型別,甚至可以轉換內建資料型別為指標

非常激進的型別轉換,在編譯期完成,可以轉換任何型別的指標,極不安全,非極端情況不要使用

去const屬性用const_cast

基本型別轉換用static_cast

多型類之間型別轉換用dynamic_cast

不同型別的指標型別轉換用 reinterpret_cast

希望我所寫的對大家有幫助

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...