This question already has answers here:
How is a variable at the same address producing 2 different values? [duplicate]

(4个答案)


5年前关闭。



#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

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

最佳答案

写定义为const的东西是未定义的(假设您当然抛弃了const)。

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

这是一个非常准确的网站。如果您在使用语言功能时遇到问题,则始终值得在恕我直言。

10-08 00:33