我们都知道const是为了防止程序对所定义的变量或者其他对象进行修改,被const修饰的那个变量也就变成常量,但是我们都知道可以用指针来修改。比如下面的代码:
int main(){ const int a = 10; int *ptr2 = const_cast<int*>(&a); *ptr2 = 20; cout << a << endl;}这时如果输出a,按道理应该为20,然而并不是这样,程序输出的a为10,如果我们分别输出&a和ptr,我们会发现他们的地址一样,并且输出*ptr结果是20,说明a已经被修改。
原因如下: C++把const看做常量,编译器会使用常数直接替换掉对a的引用,例如cout<
新闻热点
疑难解答
图片精选