標(biāo)準(zhǔn)c++中主要有四種強(qiáng)制轉(zhuǎn)換類型運(yùn)算符:
const_cast,reinterpret_cast,static_cast,dynamic_cast等等。
1)static_cast<T*>(a)
將地址a轉(zhuǎn)換成類型T,T和a必須是指針、引用、算術(shù)類型或枚舉類型。
表達(dá)式static_cast<T*>(a), a的值轉(zhuǎn)換為模板中指定的類型T。在運(yùn)行時轉(zhuǎn)換過程中,不進(jìn)行類型檢查來確保轉(zhuǎn)換的安全性。
例子:
2)dynamic_cast<T*>(a)
完成類層次結(jié)構(gòu)中的提升。T必須是一個指針、引用或無類型的指針。a必須是決定一個指針或引用的表達(dá)式。
表達(dá)式dynamic_cast<T*>(a) 將a值轉(zhuǎn)換為類型為T的對象指針。如果類型T不是a的某個基類型,該操作將返回一個空指針。
3)const_cast<T*>(a)
去掉類型中的常量,除了const或不穩(wěn)定的變址數(shù),T和a必須是相同的類型。
表達(dá)式const_cast<T*>(a)被用于從一個類中去除以下這些屬性:const, volatile, 和 __unaligned。
4)reinterpret_cast<T*>(a)
任何指針都可以轉(zhuǎn)換成其它類型的指針,T必須是一個指針、引用、算術(shù)類型、指向函數(shù)的指針或指向一個類成員的指針。
表達(dá)式reinterpret_cast<T*>(a)能夠用于諸如char* 到 int*,或者One_class* 到 Unrelated_class*等類似這樣的轉(zhuǎn)換,因此可能是不安全的。
本文轉(zhuǎn)自http://www.libing.net.cn/read.php?520
posts - 94, comments - 138, trackbacks - 0, articles - 94
Copyright © RichardHe