C++中的const_cast

#include<iostream>
#include<string>
using namespace std;
int main()
{
const int num=1;
int *p=const_cast<int *>(&num);
*p=2;
cout<<num<<endl;//输出1
cout<<*p<<endl;//输出2
// 但&num和p却是相同的这是为什么?
cout<<&num<<endl;
cout<<p<<endl;
}
问题补充:
我想要强调的是为什么指针P和&num是相同的,但*p却和num不同,同一个地址怎么会有不同的两个值

回答:
通常C++是不为const分配存储空间的!
而是把定义保存在符号表里。而且,进符号表时就被初始化了,此例中,符号 num 的值永远只会是 1。

使用指针(取地址)则是强制分配空间!但得到的和之前的const已经不是一回事。因为虽然强制分配了空间,但程序中的const仍用符号表里的。

C++够灵活吧!

你可能感兴趣的:(Const)