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