來(lái)自《c++primer第5版》,我的疑問(wèn)是粗體:const_cast const_cast只能改變運(yùn)算對(duì)象的底層constconstchar*pc;char*p=const_cast(pc);//正確:但通過(guò)p寫值是未定義的后果對(duì)于將常量對(duì)象轉(zhuǎn)換成非常量對(duì)象的行為,我們一般稱其為“去掉const性質(zhì)”。一旦我們?nèi)サ袅四硞€(gè)對(duì)象的const性質(zhì),編譯器就不再阻止我們對(duì)該對(duì)象進(jìn)行寫操作了。如果對(duì)象本身不是一個(gè)常量,使用強(qiáng)制類型轉(zhuǎn)換獲得寫權(quán)限是合法的行為。上面這句話是什么意思?是說(shuō)char*pc;constchar*p=const_cast(pc);用來(lái)對(duì)p寫值是合法的行為嗎?我覺(jué)得反過(guò)來(lái)才對(duì)吧?(我已經(jīng)懂了,作者意思應(yīng)該是說(shuō)非常量constcast成常量后再constcast成非常量的這種情況是可以獲得寫權(quán)限的)然而如果對(duì)象是一個(gè)常量,在使用const_cast執(zhí)行寫操作就會(huì)產(chǎn)生未定義的后果。我想const_cast的目的就是用來(lái)對(duì)const對(duì)象寫值,如果“通過(guò)p寫值是未定義的后果”那么使用const_cast有什么用呢?
關(guān)于const_cast的幾點(diǎn)疑問(wèn)
拉風(fēng)的咖菲貓
2019-04-14 10:19:32