为了账号安全,请及时绑定邮箱和手机立即绑定

关于const_cast的几点疑问

关于const_cast的几点疑问

拉风的咖菲猫 2019-04-14 10:19:32
来自《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有什么用呢?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 369 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信