c++ const有关问题

c++ const问题
const int ca = 9;
const int * b = &ca;
cout << ca << *(&ca) << *b << endl;

*(const_cast<int *>(b)) = 12;
cout << ca << *(&ca) << *b << endl;

输出结果 9 9 9
         9 9 12

这段代码中将const指针去掉const属性后,可以修改值,但是ca的值一直不变,但是ca所在地址的值确实修改了...所以想问问const int ca是怎么存储的?为什么会出现这种情况

分数不多了,还请大侠们不吝赐教
c++ 存储 指针 const

------解决方案--------------------
有的编译器会直接把 ca 替换为9, 毕竟c++里建议用 const int a=9; 替代 #define a 9
------解决方案--------------------
常量折叠说的是,在编译阶段,对该变量进行值替换,同时,该常量拥有自己的内存空间,并非像宏定义一样不分配空间,需澄清这点