gpt4 book ai didi

c++ - const_cast 不改变值

转载 作者:行者123 更新时间:2023-11-30 01:43:46 26 4
gpt4 key购买 nike

<分区>

const_cast之后,main函数中的值没有变化。但是在调用外部函数时发生变化,仍然在 main 中打印旧值(其中 const int 首先被初始化)。

int main() {
const int i = 5;
int* p = const_cast<int*>(&i);
*p = 22;
std::cout<<i;
return 0;
}

输出是5,为什么?监 window 口显示 i = 22 的值:

Watch-window value

那么为什么它打印 5 呢?如果我调用外部函数,输出会有所不同:

void ChangeValue(const int i) {
int* p = const_cast<int*>(&i);
*p = 22;
std::cout<<i; //Here the value changes to 22
}

int main() {
const int i = 5;
ChangeValue(i); //Value changes to 22 in the ChangeValue function
std::cout<<i // It again prints 5.
}

为什么调用ChangeValue函数后,即使值发生变化,值也没有变化?

我在 Linux 平台上得到相同的输出。有人可以澄清我的困惑吗?

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