C++ const 机制

我们都知道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<

你可能感兴趣的:(c++)