在常量数据类型上使用const_cast

时间:2018-03-27 14:12:35

标签: c++ const-cast

据我所知,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 ++的新手并试图了解不同的转换操作。提前致谢

0 个答案:

没有答案