当前位置:  开发笔记 > 编程语言 > 正文

const在运行时有效

如何解决《const在运行时有效》经验,为你挑选了1个好方法。

前几天,一位C++培训师告诉我,"const"只在编译时(静态)有意义,因此在运行时没有影响......但是当我测试这个例子时:

const int x = 5;
int * px = const_cast(&x);
*px = 10;
std::cout << "x = " << x <

x不是用10修改的!然而,如果我们使用指针,这个例子按预期工作:

const int * x = new int(5);
int * px = const_cast(x);
*px = 10;
std::cout << "x = " << *x <

那么,这个C++教练是错的?



1> Simple..:

修改const Tvia 是未定义的行为const_cast.这允许编译器在假设从未发生过的情况下优化代码.在您的第一个代码示例中,编译器可能5在调用期间在代码中插入了一个文字operator<<.

你的第二个例子是完全明确的,因为x它真的指向一个int,而不是一个const int.在这种情况下,抛弃constness很好.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有