c風格的轉換只是在括號中指定目標型別。標準的c++包括乙個顯式的轉化語法:
static_cast:用於「良性」和「適度良性」轉換,包括不用強制轉換(例如自動型別轉換)
const_cast:對const和/或volatile進行轉換
reinterpret_cast:轉換為完全不同的意思。這是所有的轉換中最危險的
dynamic_cast:用於型別安全的向下轉換
static_cast:
// typical castless conversions:const_cast:l=i;
f=i;
// also works:
l=static_cast
(i);
f=static_cast
(i);
// forcing a conversion from void*
void* vp=&i;
// old way produces a dangerous conversion:
float* fp=(float*)vp;
// the new way is equally dangerous:
fp=static_cast
(vp);
如果從const轉換為非const或者從volatile轉換成非volatile,可以使用const_cast
const int ci=0;reinterpret_cast:int* j=(int*)&ci;
j=const_cast
(&ci);
// error
// long* lp=const_cast(&ci);
volatile int k=0;
int* u=const_cast
(&k);
這是最不安全的轉換機制。reinterpret_cast把物件假想為模式,彷彿它是一種完全不同型別的物件。
C 顯示型別轉換
首先說明,該內容主要摘自c stl 開發技術導引。在c語言中,我們一般採用隱式型別轉換,這樣導致的結果是可讀性不高。如下這段 這段 將double型別轉換成了int型別,問題是如果別人來看這段 的時候,別人可能就不知道這種轉換是程式需要的還是編寫 的人不小心寫錯了呢。因此,在c 程式中應盡量使用顯示...
c 顯示型別轉換
dynamic cast,static cast,const cast,1.使用dynamic cast 操作符將基類型別物件的引用或者指標轉換為同一繼承層次中其他型別的引用或者指標 執行時型別檢查 2.const cast 操作符將變數的const性質轉換掉 example1 double d 8...
c 顯示型別轉換
c 引入了4個新的強制型別轉換操作符,static cast dynamic cast const cast reinterpret cast,用以支援更為精細的型別轉換。這些操作符取代了以往小圓括號所代表的舊式轉型,能夠清楚闡明轉型的目的。這些新式轉型操作符給了編譯器更多資訊,讓編譯器清楚知道轉型...