新聞中心
這篇文章主要介紹c++中如何使用static_cast轉(zhuǎn)換,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
static_cast是一個強制類型轉(zhuǎn)換操作符。強制類型轉(zhuǎn)換,也稱為顯式轉(zhuǎn)換,C++中強制類型轉(zhuǎn)換操作符有static_cast、dynamic_cast、const_cast、reinterpert_cast四個。本節(jié)介紹static_cast操作符。
static_cast的轉(zhuǎn)換
?編譯器隱式執(zhí)行的任何類型轉(zhuǎn)換都可以由static_cast來完成,比如int與float、double與char、enum與int之間的轉(zhuǎn)換等。
doublea=1.999;
intb=static_cast
當(dāng)編譯器隱式執(zhí)行類型轉(zhuǎn)換時,大多數(shù)的編譯器都會給出一個警告:
e:\vs2010projects\static_cast\static_cast\static_cast.cpp(11):warningC4244:“初始化”:從“double”轉(zhuǎn)換到“int”,可能丟失數(shù)據(jù)
使用static_cast可以明確告訴編譯器,這種損失精度的轉(zhuǎn)換是在知情的情況下進行的,也可以讓閱讀程序的其他程序員明確你轉(zhuǎn)換的目的而不是由于疏忽。
把精度大的類型轉(zhuǎn)換為精度小的類型,static_cast使用位截斷進行處理。
?使用static_cast可以找回存放在void*指針中的值。
doublea=1.999;
void*vptr=&a;
double*dptr=static_cast
cout<<*dptr< static_cast用來做什么 static_cast也可以用在于基類與派生類指針或引用類型之間的轉(zhuǎn)換。然而它不做運行時的檢查,不如dynamic_cast安全。static_cast僅僅是依靠類型轉(zhuǎn)換語句中提供的信息來進行轉(zhuǎn)換,而dynamic_cast則會遍歷整個類繼承體系進行類型檢查,因此dynamic_cast在執(zhí)行效率上比static_cast要差一些。現(xiàn)在我們有父類與其派生類如下: classANIMAL { public: ANIMAL():_type("ANIMAL"){}; virtualvoidOutPutname(){cout<<"ANIMAL";}; private: string_type; 以上是“c++中如何使用static_cast轉(zhuǎn)換”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文標(biāo)題:c++中如何使用static_cast轉(zhuǎn)換-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/dpjhdc.html