来自《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有什么用呢?
添加回答
举报
0/150
提交
取消