C 強制型別轉換

2021-08-27 02:34:55 字數 768 閱讀 5877

static_cast(expression) #從字面上來看,靜態轉換即編譯時刻執行資料型別檢測,當**執行的時候不會去檢測.

dynamic_cast(expression) #顧名思義,動態轉換即在**執行的時候進行資料型別檢測,編譯時不去檢測資料型別.

const_cast(expression) #顧名思義,如果(expression) 是const型別則轉換後(expression) 變為非const型別,如果(expression) 是非const型別則轉換後變為const型別

reinterpret_cast(expression) #顧名思義,這個轉換不會進行型別安全檢測, 如果向下進行型別轉換可能存在資料丟失.

重要部分:

強制型別轉換,就是把不同型別的資料格式進行轉換,但是因為資料格式的不同,那麼在記憶體中的佔位也不一樣,因此在強制轉換的過程中會存在資料丟失.

ex, int 型別和long, char之間如果進行轉換.

父類和子類之間的強制型別轉換.

baseclass* bclass = new baseclass();

deriveclass* dclass = dynamic_cast(bclass);

dynamic_cast與static_cast之間的區別在於, dynamic_cast操作符在執行時檢查轉換的有效性,而static_cast操作符則不然,編譯器依賴編碼人員來保證static_cast操作的有效性,因此應該使用dynamic_cast在類層次結構中執行向上和向下的強制轉換操作,同時還應該檢查轉換的結果是否為空.

C 強制型別轉換

四種型別可能很多人都常常忽略就象我一樣,但是有時還是比較有用的。不了解的建議看看,一些機制我也不是十分了解,只是將一些用法寫出來讓大家看看。強制轉化無論從語法還是語意上看,都是c 中最難看的特徵之一。但是基於c風格的轉化的語義的不明確性及其一些潛在問題。強制型別轉化最終還是被c 接受了。1.stat...

C 強制型別轉換

標準c 中主要有四種強制轉換型別運算子 const cast,reinterpret cast,static cast,dynamic cast等等。1 static cast a 將位址a轉換成型別t,t和a必須是指標 引用 算術型別或列舉型別。表示式static cast a a的值轉換為模板中...

C 強制型別轉換

關於強制型別轉換的問題,很多書都討論過,寫的最詳細的是c 之父的 c 的設計和演化 最好的解決方法就是不要使用c風格的強制型別轉換,而是使用標準c 的型別轉換符 static cast,dynamic cast。標準c 中有四個型別轉換符 static cast,dynamic cast,reint...