关于const_cast
来源:9-8 const_cast的使用
kitakaze
2020-06-04
老师你好,我自己写了一遍关于const_cast这里的代码去调试的时候发现了几个地方我不是很理解
#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
const int a = 10;
/*int *ptr;
*ptr = const_cast<int*>(&a);*/
int *ptr = const_cast<int*>(&a);
cout << *ptr << endl;
*ptr = 100;
cout << *ptr << endl;
cout << a<< endl;
return 0;
}
这是我调试的时候的代码,我有两个问题想问一下
1.为什么用注释内的代码进行定义 初始化的时候编译不通过,说 不能将 "int " 类型的值分配到 “int” 类型的实体
2.我查看了一下内存,当我ptr赋值为100的时候 由于ptr指向a,a的值也变成了100,但是在输出a值的时候输出来的却是10,我想问一下这是什么原因呢,还有 a的值是100,但是这个10是存储在哪里然后被输出出来的呢?
请老师帮忙解惑,谢谢
写回答
1回答
-
编译器会保证a的值不变,看汇编代码就明白为什么了。
032020-06-04
相似问题