08 型別轉換

2021-10-13 07:27:17 字數 1614 閱讀 5863

c方式的強制型別轉換

**示例

#include

typedef

void

(pf)

(int);

// 結構體

struct point

;int

main()

程式執行結果

c語言強制型別轉換存在的問題

1、過於粗暴

任意型別之間都可以進行轉換,編譯器很難判斷其正確性。

2、難於定位

在原始碼中無法快速定位所有使用強制型別轉換的語句。

c++將強制型別轉換分為4種不同的型別。

static cast 強制型別轉換

用於基本型別間的轉換。不能用於基本型別指標間的轉換。

用於有繼承關係類物件之間的轉換和類指標之間的轉換。

const cast 強制型別轉換

用於去除變數的唯讀屬性。

強制轉換的目標型別必須是指標或引用。

dynamic_ cast 強制型別轉換

用於指標型別間的強制轉換。

用於整數和指標型別間的強制轉換。

reinterpret_ cast 強制型別轉換

用於有繼承關係的類指標間的轉換。

用於有交叉關係的類指標間的轉換。

具有型別檢查的功能。需要虛函式的支援。

語法:

***_ cast< type >( expression)
**示例

#include

using

namespace std;

// 宣告函式

void

static_cast_demo()

void

const_cast_demo()

void

reinterpret_cast_demo()

void

dynamic_cast_demo()

intmain()

程式執行結果

c方式的強制型別轉換

過於粗暴

潛在的問題不易被發現

不易在**中定位

新式型別轉換
編譯器能夠幫 助檢查潛在的問題

非常方便的在**中定位

支援動態型別識別( dynamic_ cast)

21型別轉換

典型案例總結 靜態型別轉換,編譯的時c 編譯器會做型別檢查 基本型別能轉換 但是不能轉換指標型別,只要隱式型別轉換可以的地方都可以使用static cast。若不同型別之間,進行強制型別轉換,用reinterpret cast 進行重新解釋。一般性結論 總結 static cast 和reinter...

七型別轉換

c 提供六種型別轉換符號。前兩種是c風格,稱為c風格強制轉換,t 或者t 他們的效果一樣。後面四種分別是 負責將const型別轉換為非const型別,也可以反過來轉換。通常非const型別會自動轉換成const型別,所以一般不需要使用const cast進行轉換,但是如果有過載函式或者模板特化的話,...

009 型別轉換

運算子兩邊的資料型別必須一致,且表示式的值 也是運算子兩邊的數的型別,不一致時,要先轉換,再運算。自動型別轉換 隱式型別轉換 將精度低的轉為精度高的資料,系統自動進行,不會造成資料精度丟失。前提 型別相容 double int double string 目標型別精度大於源型別 顯式型別轉換 強制轉...