const_cast转换咨询

来源:9-8 const_cast的使用

慕粉4252638

2023-02-24

图片描述
按照汇编质量,这里的int* p = const_cast<int*>(&a);转换,是不是就是新开辟了一个int*指针,将a的值赋值给了P指针指向的地址,但是看调试,p所指向的内存的地址就是a的内存地址,然后改变p的值可以改变,但是a的值不能改变,这里有点理解不了

写回答

1回答

quickzhao

2023-02-24

是的,p确实改变了变量a的地址所存的信息。但是编译器是通过缓存的方式让你看起来a的值没改变,所以这里cout或者其他地方用的a的值是从其他地方的缓存处直接取出来的。比如这里cout就是直接使用了push 0Ah的进行赋值,你看看下面的汇编代码。

0
0

重学C++ ,重构你的C++知识体系

一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维

3884 学习 · 1103 问题

查看课程