关于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回答

quickzhao

2020-06-04

编译器会保证a的值不变,看汇编代码就明白为什么了。

0
3
kitakaze
回复
quickzhao
噢噢噢 是这样的啊 谢谢老师!
2020-06-04
共3条回复

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

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

3884 学习 · 1103 问题

查看课程