C++的安全类型转换的讨论
關(guān)于強(qiáng)制類型轉(zhuǎn)換的問題,很多書都討論過,寫的最詳細(xì)的是C++ 之父的《C++的設(shè)計(jì)和演化》。最好的解決方法就是不要使用C風(fēng)格的強(qiáng)制類型轉(zhuǎn)換,而是使用標(biāo)準(zhǔn)C++的類型轉(zhuǎn)換符:static_cast, dynamic_cast。標(biāo)準(zhǔn)C++中有四個(gè)類型轉(zhuǎn)換符:static_cast、dynamic_cast、reinterpret_cast、和 const_cast。下面對它們一一進(jìn)行介紹。
I.static_cast
用法:static_cast <type-id > ( expression )
該運(yùn)算符把expression轉(zhuǎn)換為type-id類型,但沒有運(yùn)行時(shí)類型檢查來保證轉(zhuǎn)換的安全性。它主要有如下幾種用法:
①用于類層次結(jié)構(gòu)中基類和子類之間指針或引用的轉(zhuǎn)換。
進(jìn)行上行轉(zhuǎn)換(把子類的指針或引用轉(zhuǎn)換成基類表示)是安全的;
進(jìn)行下行轉(zhuǎn)換(把基類指針或引用轉(zhuǎn)換成子類表示)時(shí),由于沒有動(dòng)態(tài)類型檢查,所以是不安全的。
②用于基本數(shù)據(jù)類型之間的轉(zhuǎn)換。如把int轉(zhuǎn)換成char,把int轉(zhuǎn)換成enum。這種轉(zhuǎn)換的安全性也要開發(fā)人員來保證。
③把空指針轉(zhuǎn)換成目標(biāo)類型的空指針。
④把任何類型的表達(dá)式轉(zhuǎn)換成<
總結(jié)
以上是生活随笔為你收集整理的C++的安全类型转换的讨论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcpcopy使用方法
- 下一篇: C 和c++的一些杂想,想到哪儿写到哪儿