程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c和c++的強制類型轉換

c和c++的強制類型轉換

編輯:C++入門知識

我們知道c語言中的類型轉換只有一種,

TYPE b = (TYPE)a;

而在c++中按照不同作用的轉換類型將其細分為三個顯示類型轉換符號static_cast, const_cast, reinterpret_cast,這種顯示轉換可以提供更豐富的含義和功能,更好的類型檢查機制,方便代碼的維護。

  • 主要用於相關類型之間的轉換,如c的基本數據類型char,int,double等之間,以及基類和子類之間轉換(沒有dynamic_cast安全),可能會有字節轉換,不可以轉換不相關類型如int*和double*,以及沒有繼承關系的類指針
  • void*與其他類型指針之間的轉換
 bv = 
 i = ()bv;  
 iv2 = static_cast<>(bv); 
 iv2 = reinterpret_cast<>(bv); 

 bv =  *pbv = & *iv1 = (*)pbv; 
 *iv2 = static_cast<*>(pbv); 
 *iv2 = reinterpret_cast<*>(pbv); 
 *piv1 = (* *piv2 = static_cast<*> *piv3 = static_cast<*>(piv2); 

  • 轉換的類型type必須是一個指針或引用,僅僅按照轉換後的類型重新解釋字節,並不會做字節轉換
  • 如果將非指針變量轉換成指針,變量大小必須與指針大小相等。
  • 移植性差
 lv =   llv = *piv1 = (*)lv;  
 *piv2 = reinterpret_cast<*>= reinterpret_cast<*>(llv); 

去除指針或者引用的const或volatile屬性

  const_char =  *pch = &const_char;  
 *pch = (*)&const_char; 
*pch = 
  const_char =  chv = const_cast<>
  *pch = & *chv = const_cast<*>(&const_char);
*chv=’c’;

總結:這三種與c對應的強制類型轉換符號都是編譯時確定的,RTTI的dynamic_cast和c沒有關系,以後再專門介紹。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved