据我所知,const_cast可用于抛弃(移除)常量或波动。但我无法理解下面代码的执行情况。
#include <iostream>
int main()
{
const int i = 20;
int *p = const_cast<int*>(&i);
std::cout << "i:" << i << " *p:" << *p << " p:" << p << " &i:" << &i << std::endl;
(*p)++;
std::cout << "i:" << i << " *p:" << *p << " p:" << p << " &i:" << &i << std::endl;
return 0;
}
当我尝试运行上面的代码时,获得了以下结果:
i:20 *p:20 p:0x7ffc579d18e4 &i:0x7ffc579d18e4
i:20 *p:21 p:0x7ffc579d18e4 &i:0x7ffc579d18e4
任何人都可以解释我的输出。我是C ++的新手并试图了解不同的转换操作。提前致谢