国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++的四種轉型小結

2019-11-06 07:58:26
字體:
來源:轉載
供稿:網友

static_cast

static_cast應該是適用范圍最廣的,適用于很多隱式轉換,基類指針與子類指針的相互轉換,或者添加const屬性,去掉const屬性應該用const_cast

double a = 10.23;int b = static_cast<int>(a);Base *ptr = new Child();Child ptr2 = static_cast<Child*>(ptr);const Base *ptr3 = static_cast<const Base*>(ptr)

但是需要注意的是,static_cast 在執行基類的指針轉換為派生類的指針時( 即向下轉型),此類轉換并非始終安全。這時應該使用dynamic_cast,如果是向上轉型,則兩者效果相同。

dynamic_cast

dynamic_cast轉換符只能用于指針或者引用。dynamic_cast轉換符只能用于含有虛函數的類。dynamic_cast轉換操作符在執行類型轉換時首先將檢查能否成功轉換,如果能成功轉換則轉換之,如果轉換失敗,如果是指針則反回一個0值,如果是轉換的是引用,則拋出一個bad_cast異常,所以在使用dynamic_cast轉換之間應使用if語句對其轉換成功與否進行測試,比如pd = dynamic_cast(pb); if(pd){…}else{…},或者這樣測試if(dynamic_cast(pb)){…}else{…}。

Base *ptr = new Base();Child * ptr2 = dynamic_cast<Child*>(ptr);if(!ptr2) cout<<error;

ptr指針指向的是基類,轉化為子類指針肯定會引發問題,所以這個時候我們應該使用dynamic_cast進行檢查,這樣可以避免盲目轉換。

const_cast

用來將對象的常量性去除

reinterPRet_cast

它可以把一個指針轉換成一個整數,也可以把一個整數轉換成一個指針(先把一個指針轉換成一個整數,再把該整數轉換成原類型的指針,還可以得到原先的指針值),或者把一種指針轉為另一種指針


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 株洲市| 海安县| 壤塘县| 绥芬河市| 磐安县| 桦甸市| 金乡县| 霍州市| 鹤峰县| 临沧市| 丰镇市| 宁河县| 吴堡县| 陇西县| 贺兰县| 旺苍县| 新晃| 卢氏县| 左权县| 枣阳市| 舒兰市| 宿松县| 荆州市| 鹿泉市| 沁水县| 乌恰县| 历史| 繁峙县| 宁夏| 彰武县| 茶陵县| 古丈县| 额敏县| 商水县| 徐州市| 新巴尔虎右旗| 赤城县| 南陵县| 蓬安县| 荣成市| 含山县|