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