关于const_cast的几点疑问

来自《c++primer第5版》,我的疑问是粗体:
const_cast
  const_cast只能改变运算对象的底层const
constchar*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有什么用呢?
拉风的咖菲猫
浏览 370回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript