gpt4 book ai didi

c++ - const_cast 有效但 const_cast 无效

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:19 29 4
gpt4 key购买 nike

我的问题是,为什么代码的第一部分不起作用而第二部分有效。非常量指针应该修改之前使用 const_cast 的 const 值,但是对于整数这个技巧不起作用。您能解释一下为什么会这样吗?

const int i = 5;
cout << i << endl; //output: 5
int *ptr_i = const_cast<int*>(&i);
*ptr_i = 100;
cout << i << endl; //output : 5

const double d = 5;
cout << d << endl; //output : 5
double *ptr_d = const_cast<double*>(&d);
*ptr_d = 100.;
cout << d << endl; //output : 100

最佳答案

修改 const 变量是未定义的行为:

n4296 §7.1.6.1/4

Except that any class member declared mutable (7.1.1) can be modified, any attempt to modify a const object during its lifetime (3.8) results in undefined behavior.

const_cast 通常用于与非 const 正确的 API 通信或丢弃 volatile 限定符;它不应该这样使用。

关于c++ - const_cast<double*> 有效但 const_cast<int*> 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29344299/

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