<分区>
我知道使用 const_cast
通常是个坏主意,但我在尝试使用它时遇到了一个奇怪的行为,其中:
两个指针具有相同的地址值,但在取消引用时,会给出不同的数据值。
有人对此有解释吗?
代码
#include <iostream>
int main()
{
const int M = 10;
int* MPtr = const_cast<int*>(&M);
(*MPtr)++;
std::cout << "MPtr = " << MPtr << " (*MPtr) = " << (*MPtr) << std::endl;
std::cout << " &M = " << &M << " M = " << M << std::endl;
}
输出
MPtr = 0x7fff9b4b6ce0 (*MPtr) = 11
&M = 0x7fff9b4b6ce0 M = 10