修改const修饰的对象

Damn_boy 2011-09-13 10:32:19

const char c = 'a';
const chat *pc = &c;
char *ppc = const_cast<char *>(pc);
*ppc = 'b';


这个算是缺陷吗?还是算什么别的?
这样间接的修改会不会带来什么问题啊?
...全文
164 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dazhabai 2011-09-14
  • 打赏
  • 举报
回复
用const_cast就是来去除const限定的
pathuang68 2011-09-13
  • 打赏
  • 举报
回复
const_cast传递对象的const属性,或者是设置或者是移除。如:
Class C{…}
const C* a = new C;
C* b = const_cast<C*>(a);
如果将上面的const_cast转换成其他任何其他的转换,编译都不能通过,出错的信息大致如下:
"…cannot convert from 'const class C *' to 'class C *'”。

上面的const_cast是将a的常量性移除后赋给b。
blueboy82006 2011-09-13
  • 打赏
  • 举报
回复
c
pc
ppc
地址是一样的,但内容却不一样。额~~~~
大道曙光 2011-09-13
  • 打赏
  • 举报
回复
mark study
这个要看const_cast吧
机智的呆呆 2011-09-13
  • 打赏
  • 举报
回复
除了可以修改const对象中声明成mutable的成员外,在const对象生存期中任何修改const对象的尝试都将导致未定义行为。
lvjing_CSDN 2011-09-13
  • 打赏
  • 举报
回复
最直接的问题就是这个const变量被修改了。主要问题在于我们定义一个const变量的主要原因是不想在程序中被修改,楼主这么做有悖与初衷。如果一个变量在程序中可能被修改,那么就不要定义为const变量。

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧