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 目標型別精度大於源型別 顯式型別轉換 強制轉...