dynamic_cast, static_cast, const_cast,
1. 使用dynamic_cast 操作符將基類型別物件的引用或者指標轉換為同一繼承層次中其他型別的引用或者指標(執行時型別檢查)。
2. const_cast 操作符將變數的const性質轉換掉
example1:
double d=8.9;
void *p=&d;
double *dp=static_cast(p);
example2:
bulk_item bulk;
item_base *item=&bulk; //ok
bulk_item *bulkp=item; //error 雖然我們知道這樣是安全的但是編譯器不知到,此時可以用static_cast 告訴編譯器進行轉換
bulk_item *bulkp=static_castitem;
4. reinterpret_cast 通常為運算元的為模式提供較低層次的重新解釋。
rtti (執行時型別識別),在執行時程式能夠使用基類的指標或者引用來檢測這些指標或者引用所指向的實際派生型別,通過下面兩種方式提供rtti:
1 . typeid() 操作符,返回指標或者引用所指物件的實際型別
2. dynamic_cast 操作符。
C 顯示型別轉換
首先說明,該內容主要摘自c stl 開發技術導引。在c語言中,我們一般採用隱式型別轉換,這樣導致的結果是可讀性不高。如下這段 這段 將double型別轉換成了int型別,問題是如果別人來看這段 的時候,別人可能就不知道這種轉換是程式需要的還是編寫 的人不小心寫錯了呢。因此,在c 程式中應盡量使用顯示...
c 顯示型別轉換
c 引入了4個新的強制型別轉換操作符,static cast dynamic cast const cast reinterpret cast,用以支援更為精細的型別轉換。這些操作符取代了以往小圓括號所代表的舊式轉型,能夠清楚闡明轉型的目的。這些新式轉型操作符給了編譯器更多資訊,讓編譯器清楚知道轉型...
C 中顯示型別轉換
c 引入了 const cast,reinterpret cast 之類的新的顯式型別轉換方式,不僅大多數 c 程式設計師覺得不是很習慣,就連某些有經驗的c 程式設計師都會在一些細節上犯錯。誠然,既然我們可以簡單的寫出 int i int p p is a pointer 這樣的顯式轉換,為什麼還要...