gpt4 book ai didi

c++ - 在 C++ 中更改 const 变量的值

转载 作者:IT老高 更新时间:2023-10-28 22:17:34 25 4
gpt4 key购买 nike

我正在尝试更改定义为 int const 的变量的值,如下所示。

const int w = 10;
int* wp = const_cast <int*> (&w);
*wp = 20;

w 的值没有改变,即使在赋值之后也是 10,尽管它表明 w 和 wp 都指向同一个内存位置。但是如果在声明时定义如下,我可以更改 w 的值

int i = 10;
const int w = i;

如果我更改 i 的声明以使其像 in 一样 const

const int i = 10;

w 的值不变。

在第一种情况下,为什么 w 的值没有改变,即使 w 和 wp 指向同一个内存位置[这是我打印它们的地址时得到的印象]

编译器对这两种情况的处理方式不同有什么不同?

有没有办法确保 w 不会失去常量,而不管它的定义方式如何?

最佳答案

这是未定义 const 类型转换的情况之一,因为代码可能已经过优化,因此 w 不是真正的变量,并且在编译后的代码中并不真正存在。

尝试以下方法:

const volatile int w = 10; 
int &wr = const_cast <int &> (w);
wr = 20;
std::cout << w << std::endl;

无论如何,我不建议这样滥用 const_cast。

关于c++ - 在 C++ 中更改 const 变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com