C 中的型別轉換函式

2021-07-03 05:00:41 字數 1073 閱讀 3948

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...