使用const_cast <>并更改地址处的值不会更改原始变量

use*_*585 1 c++ c++11

#include <iostream>

using namespace std;

int main()
{
    const int kiNum = 100;
    int* ptr = const_cast<int*>(&kiNum);
    *ptr = 200; 
    cout<<"kiNum: "<<kiNum; // The value still prints 100 on the console??
    return 0;
}

output:
kiNum = 100 
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,我试图在const_cast之后更改const整数的值,然后更改地址处的值,但控制台仍然打印旧值(我使用的是visual studio 2012)

qea*_*adz 5

写入定义为const的内容是未定义的(假设您当然抛弃了const).

http://en.cppreference.com/w/cpp/language/const_cast

这是一个非常准确的网站.如果你有语言功能的问题,它总是值得在那里查找恕我直言.