1. 四種: static_cast,dynamic_cast,const_cast,reinterpret_cast
2. 他們的使用
1>static_cast: 任何隱式轉換都可以由它完成,僅當型別之間可隱式轉換時(除類層次間的下行轉換),static_cast的轉換才是合法的,否則將出錯。
class a
4 這個例子進一步說明了,如果函式非虛,呼叫哪乙個取決於指標,如果虛取決於指標指向的型別。
2> dynamic_cast:該運算子把expression轉換成type型別的物件,type必須是類的指標、類的引用或者void*。(注: 對於沒有虛函式表的類使用會導致dynamic_cast編譯錯誤)。
dynamic_cast在執行向上轉型時和static_cast是一樣的,但是下行轉換時dynamic_cast存在執行時型別檢查。
如果下行轉換是安全的(如果基類指標或者引用確實指向乙個派生類的物件)這個運算子會傳回轉型過的指標。如果下行轉換不安全,這個運算子會傳回空指標。
3> const_cast: 新增或者刪除const特性。
set 的迭代器預設是const型別的不能夠對元素進行修改。
1 #include
2 #include
3 using namespace std;
4 int main()
5 {6 sets;
7 s.insert(1);
8 s.insert(2);
9 s.insert(3);
10 s.insert(4);
11 s.insert(5);
12 set::iterator iter;
13 for(iter=s.begin();iter!=s.end();iter++)
14 {
15 (const_cast(*iter))++;
16 cout<<(*iter)<4> reinterpret_cast:顯示強制轉換,在有這個之前顯示強制轉換是用圓括號將型別括起來實現。
~
C 中的型別轉換函式
1,轉換建構函式可以將普通的基礎型別轉換為當前的類型別,也有能力將其它類類 型的物件轉換為當前的類型別 2,問題 1,類型別是否能夠型別轉換到普通型別?1,可以的 3,型別轉換函式 1,c 類中可以定義型別轉換函式 2,型別轉換函式用於將類物件轉換為其他型別 1,不管什麼型別都可以 3,語法規則 1...
C 的型別轉換函式
c 的型別轉換函式 reinterpret cast const cast static cast 和dynamic cast 前三個型別轉換是在 編譯時實現轉換 dynamic cast 是在執行時進行型別轉換的。reinterpret cast expression const cast new...
C 的型別轉換函式
c 的型別轉換函式 reinterpret cast const cast static cast 和dynamic cast 前三個型別轉換是在 編譯時實現轉換 dynamic cast 是在執行時進行型別轉換的。reinterpret cast expression const cast new...